webview2_com_sys/
bindings.rs

1// Bindings generated by `windows-bindgen` 0.62.1
2
3#[inline]
4pub unsafe fn CompareBrowserVersions<P0, P1>(
5    version1: P0,
6    version2: P1,
7    result: *mut i32,
8) -> windows_core::Result<()>
9where
10    P0: windows_core::Param<windows_core::PCWSTR>,
11    P1: windows_core::Param<windows_core::PCWSTR>,
12{
13    windows_link::link!("webview2loader" "system" fn CompareBrowserVersions(version1 : windows_core::PCWSTR, version2 : windows_core::PCWSTR, result : *mut i32) -> windows_core::HRESULT);
14    unsafe {
15        CompareBrowserVersions(version1.param().abi(), version2.param().abi(), result as _).ok()
16    }
17}
18#[inline]
19pub unsafe fn CreateCoreWebView2Environment<P0>(
20    environmentcreatedhandler: P0,
21) -> windows_core::Result<()>
22where
23    P0: windows_core::Param<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>,
24{
25    windows_link::link!("webview2loader" "system" fn CreateCoreWebView2Environment(environmentcreatedhandler : * mut core::ffi::c_void) -> windows_core::HRESULT);
26    unsafe { CreateCoreWebView2Environment(environmentcreatedhandler.param().abi()).ok() }
27}
28#[inline]
29pub unsafe fn CreateCoreWebView2EnvironmentWithOptions<P0, P1, P2, P3>(
30    browserexecutablefolder: P0,
31    userdatafolder: P1,
32    environmentoptions: P2,
33    environmentcreatedhandler: P3,
34) -> windows_core::Result<()>
35where
36    P0: windows_core::Param<windows_core::PCWSTR>,
37    P1: windows_core::Param<windows_core::PCWSTR>,
38    P2: windows_core::Param<ICoreWebView2EnvironmentOptions>,
39    P3: windows_core::Param<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>,
40{
41    windows_link::link!("webview2loader" "system" fn CreateCoreWebView2EnvironmentWithOptions(browserexecutablefolder : windows_core::PCWSTR, userdatafolder : windows_core::PCWSTR, environmentoptions : * mut core::ffi::c_void, environmentcreatedhandler : * mut core::ffi::c_void) -> windows_core::HRESULT);
42    unsafe {
43        CreateCoreWebView2EnvironmentWithOptions(
44            browserexecutablefolder.param().abi(),
45            userdatafolder.param().abi(),
46            environmentoptions.param().abi(),
47            environmentcreatedhandler.param().abi(),
48        )
49        .ok()
50    }
51}
52#[inline]
53pub unsafe fn GetAvailableCoreWebView2BrowserVersionString<P0>(
54    browserexecutablefolder: P0,
55    versioninfo: *mut windows_core::PWSTR,
56) -> windows_core::Result<()>
57where
58    P0: windows_core::Param<windows_core::PCWSTR>,
59{
60    windows_link::link!("webview2loader" "system" fn GetAvailableCoreWebView2BrowserVersionString(browserexecutablefolder : windows_core::PCWSTR, versioninfo : *mut windows_core::PWSTR) -> windows_core::HRESULT);
61    unsafe {
62        GetAvailableCoreWebView2BrowserVersionString(
63            browserexecutablefolder.param().abi(),
64            versioninfo as _,
65        )
66        .ok()
67    }
68}
69#[inline]
70pub unsafe fn GetAvailableCoreWebView2BrowserVersionStringWithOptions<P0, P1>(
71    browserexecutablefolder: P0,
72    environmentoptions: P1,
73    versioninfo: *mut windows_core::PWSTR,
74) -> windows_core::Result<()>
75where
76    P0: windows_core::Param<windows_core::PCWSTR>,
77    P1: windows_core::Param<ICoreWebView2EnvironmentOptions>,
78{
79    windows_link::link!("webview2loader" "system" fn GetAvailableCoreWebView2BrowserVersionStringWithOptions(browserexecutablefolder : windows_core::PCWSTR, environmentoptions : * mut core::ffi::c_void, versioninfo : *mut windows_core::PWSTR) -> windows_core::HRESULT);
80    unsafe {
81        GetAvailableCoreWebView2BrowserVersionStringWithOptions(
82            browserexecutablefolder.param().abi(),
83            environmentoptions.param().abi(),
84            versioninfo as _,
85        )
86        .ok()
87    }
88}
89#[repr(transparent)]
90#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
91pub struct COREWEBVIEW2_BOUNDS_MODE(pub i32);
92pub const COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE: COREWEBVIEW2_BOUNDS_MODE =
93    COREWEBVIEW2_BOUNDS_MODE(1i32);
94pub const COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS: COREWEBVIEW2_BOUNDS_MODE =
95    COREWEBVIEW2_BOUNDS_MODE(0i32);
96#[repr(transparent)]
97#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
98pub struct COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND(pub i32);
99pub const COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_FAILED: COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND =
100    COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND(1i32);
101pub const COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_NORMAL: COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND =
102    COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND(0i32);
103#[repr(transparent)]
104#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
105pub struct COREWEBVIEW2_BROWSING_DATA_KINDS(pub i32);
106impl COREWEBVIEW2_BROWSING_DATA_KINDS {
107    pub const fn contains(&self, other: Self) -> bool {
108        self.0 & other.0 == other.0
109    }
110}
111impl core::ops::BitOr for COREWEBVIEW2_BROWSING_DATA_KINDS {
112    type Output = Self;
113    fn bitor(self, other: Self) -> Self {
114        Self(self.0 | other.0)
115    }
116}
117impl core::ops::BitAnd for COREWEBVIEW2_BROWSING_DATA_KINDS {
118    type Output = Self;
119    fn bitand(self, other: Self) -> Self {
120        Self(self.0 & other.0)
121    }
122}
123impl core::ops::BitOrAssign for COREWEBVIEW2_BROWSING_DATA_KINDS {
124    fn bitor_assign(&mut self, other: Self) {
125        self.0.bitor_assign(other.0)
126    }
127}
128impl core::ops::BitAndAssign for COREWEBVIEW2_BROWSING_DATA_KINDS {
129    fn bitand_assign(&mut self, other: Self) {
130        self.0.bitand_assign(other.0)
131    }
132}
133impl core::ops::Not for COREWEBVIEW2_BROWSING_DATA_KINDS {
134    type Output = Self;
135    fn not(self) -> Self {
136        Self(self.0.not())
137    }
138}
139pub const COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE: COREWEBVIEW2_BROWSING_DATA_KINDS =
140    COREWEBVIEW2_BROWSING_DATA_KINDS(32i32);
141pub const COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_PROFILE: COREWEBVIEW2_BROWSING_DATA_KINDS =
142    COREWEBVIEW2_BROWSING_DATA_KINDS(16384i32);
143pub const COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE: COREWEBVIEW2_BROWSING_DATA_KINDS =
144    COREWEBVIEW2_BROWSING_DATA_KINDS(128i32);
145pub const COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY: COREWEBVIEW2_BROWSING_DATA_KINDS =
146    COREWEBVIEW2_BROWSING_DATA_KINDS(4096i32);
147pub const COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE: COREWEBVIEW2_BROWSING_DATA_KINDS =
148    COREWEBVIEW2_BROWSING_DATA_KINDS(16i32);
149pub const COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES: COREWEBVIEW2_BROWSING_DATA_KINDS =
150    COREWEBVIEW2_BROWSING_DATA_KINDS(64i32);
151pub const COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE: COREWEBVIEW2_BROWSING_DATA_KINDS =
152    COREWEBVIEW2_BROWSING_DATA_KINDS(256i32);
153pub const COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY: COREWEBVIEW2_BROWSING_DATA_KINDS =
154    COREWEBVIEW2_BROWSING_DATA_KINDS(512i32);
155pub const COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS: COREWEBVIEW2_BROWSING_DATA_KINDS =
156    COREWEBVIEW2_BROWSING_DATA_KINDS(1i32);
157pub const COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL: COREWEBVIEW2_BROWSING_DATA_KINDS =
158    COREWEBVIEW2_BROWSING_DATA_KINDS(1024i32);
159pub const COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB: COREWEBVIEW2_BROWSING_DATA_KINDS =
160    COREWEBVIEW2_BROWSING_DATA_KINDS(2i32);
161pub const COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE: COREWEBVIEW2_BROWSING_DATA_KINDS =
162    COREWEBVIEW2_BROWSING_DATA_KINDS(4i32);
163pub const COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE: COREWEBVIEW2_BROWSING_DATA_KINDS =
164    COREWEBVIEW2_BROWSING_DATA_KINDS(2048i32);
165pub const COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS: COREWEBVIEW2_BROWSING_DATA_KINDS =
166    COREWEBVIEW2_BROWSING_DATA_KINDS(32768i32);
167pub const COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS: COREWEBVIEW2_BROWSING_DATA_KINDS =
168    COREWEBVIEW2_BROWSING_DATA_KINDS(8192i32);
169pub const COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL: COREWEBVIEW2_BROWSING_DATA_KINDS =
170    COREWEBVIEW2_BROWSING_DATA_KINDS(8i32);
171#[repr(transparent)]
172#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
173pub struct COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT(pub i32);
174pub const COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_JPEG:
175    COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT = COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT(1i32);
176pub const COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_PNG: COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT =
177    COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT(0i32);
178#[repr(transparent)]
179#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
180pub struct COREWEBVIEW2_CHANNEL_SEARCH_KIND(pub i32);
181pub const COREWEBVIEW2_CHANNEL_SEARCH_KIND_LEAST_STABLE: COREWEBVIEW2_CHANNEL_SEARCH_KIND =
182    COREWEBVIEW2_CHANNEL_SEARCH_KIND(1i32);
183pub const COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE: COREWEBVIEW2_CHANNEL_SEARCH_KIND =
184    COREWEBVIEW2_CHANNEL_SEARCH_KIND(0i32);
185#[repr(transparent)]
186#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
187pub struct COREWEBVIEW2_CLIENT_CERTIFICATE_KIND(pub i32);
188pub const COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_OTHER: COREWEBVIEW2_CLIENT_CERTIFICATE_KIND =
189    COREWEBVIEW2_CLIENT_CERTIFICATE_KIND(2i32);
190pub const COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_PIN: COREWEBVIEW2_CLIENT_CERTIFICATE_KIND =
191    COREWEBVIEW2_CLIENT_CERTIFICATE_KIND(1i32);
192pub const COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_SMART_CARD: COREWEBVIEW2_CLIENT_CERTIFICATE_KIND =
193    COREWEBVIEW2_CLIENT_CERTIFICATE_KIND(0i32);
194#[repr(C)]
195#[derive(Clone, Copy, Debug, Default, PartialEq)]
196pub struct COREWEBVIEW2_COLOR {
197    pub A: u8,
198    pub R: u8,
199    pub G: u8,
200    pub B: u8,
201}
202#[repr(transparent)]
203#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
204pub struct COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND(pub i32);
205pub const COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_CHECK_BOX: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND =
206    COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND(1i32);
207pub const COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND =
208    COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND(0i32);
209pub const COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_RADIO: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND =
210    COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND(2i32);
211pub const COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SEPARATOR: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND =
212    COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND(3i32);
213pub const COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SUBMENU: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND =
214    COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND(4i32);
215#[repr(transparent)]
216#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
217pub struct COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND(pub i32);
218pub const COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_AUDIO: COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND =
219    COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND(3i32);
220pub const COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_IMAGE: COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND =
221    COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND(1i32);
222pub const COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_PAGE: COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND =
223    COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND(0i32);
224pub const COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT:
225    COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND = COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND(2i32);
226pub const COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_VIDEO: COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND =
227    COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND(4i32);
228#[repr(transparent)]
229#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
230pub struct COREWEBVIEW2_COOKIE_SAME_SITE_KIND(pub i32);
231pub const COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX: COREWEBVIEW2_COOKIE_SAME_SITE_KIND =
232    COREWEBVIEW2_COOKIE_SAME_SITE_KIND(1i32);
233pub const COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE: COREWEBVIEW2_COOKIE_SAME_SITE_KIND =
234    COREWEBVIEW2_COOKIE_SAME_SITE_KIND(0i32);
235pub const COREWEBVIEW2_COOKIE_SAME_SITE_KIND_STRICT: COREWEBVIEW2_COOKIE_SAME_SITE_KIND =
236    COREWEBVIEW2_COOKIE_SAME_SITE_KIND(2i32);
237#[repr(transparent)]
238#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
239pub struct COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT(pub i32);
240pub const COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_LEFT:
241    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT =
242    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT(2i32);
243pub const COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_RIGHT:
244    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT =
245    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT(3i32);
246pub const COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_LEFT:
247    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT =
248    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT(0i32);
249pub const COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_RIGHT:
250    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT =
251    COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT(1i32);
252#[repr(transparent)]
253#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
254pub struct COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(pub i32);
255pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_DOWNLOAD_PROCESS_CRASHED:
256    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(29i32);
257pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED:
258    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(2i32);
259pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED_BY_POLICY:
260    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(8i32);
261pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED:
262    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(1i32);
263pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH:
264    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(11i32);
265pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_MALICIOUS:
266    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(6i32);
267pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG:
268    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(4i32);
269pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE:
270    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(3i32);
271pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED:
272    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(9i32);
273pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE:
274    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(5i32);
275pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT:
276    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(10i32);
277pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR:
278    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(7i32);
279pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED:
280    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(14i32);
281pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED:
282    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(12i32);
283pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST:
284    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(16i32);
285pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN:
286    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(15i32);
287pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT:
288    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(13i32);
289pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NONE: COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON =
290    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(0i32);
291pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT:
292    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(19i32);
293pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CERTIFICATE_PROBLEM:
294    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(21i32);
295pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH:
296    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(24i32);
297pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT:
298    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(25i32);
299pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED:
300    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(17i32);
301pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN:
302    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(22i32);
303pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE:
304    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(18i32);
305pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED:
306    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(20i32);
307pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNEXPECTED_RESPONSE:
308    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(23i32);
309pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED:
310    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(26i32);
311pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED:
312    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(28i32);
313pub const COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN:
314    COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON = COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON(27i32);
315#[repr(transparent)]
316#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
317pub struct COREWEBVIEW2_DOWNLOAD_STATE(pub i32);
318pub const COREWEBVIEW2_DOWNLOAD_STATE_COMPLETED: COREWEBVIEW2_DOWNLOAD_STATE =
319    COREWEBVIEW2_DOWNLOAD_STATE(2i32);
320pub const COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED: COREWEBVIEW2_DOWNLOAD_STATE =
321    COREWEBVIEW2_DOWNLOAD_STATE(1i32);
322pub const COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS: COREWEBVIEW2_DOWNLOAD_STATE =
323    COREWEBVIEW2_DOWNLOAD_STATE(0i32);
324#[repr(transparent)]
325#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
326pub struct COREWEBVIEW2_FAVICON_IMAGE_FORMAT(pub i32);
327pub const COREWEBVIEW2_FAVICON_IMAGE_FORMAT_JPEG: COREWEBVIEW2_FAVICON_IMAGE_FORMAT =
328    COREWEBVIEW2_FAVICON_IMAGE_FORMAT(1i32);
329pub const COREWEBVIEW2_FAVICON_IMAGE_FORMAT_PNG: COREWEBVIEW2_FAVICON_IMAGE_FORMAT =
330    COREWEBVIEW2_FAVICON_IMAGE_FORMAT(0i32);
331#[repr(transparent)]
332#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
333pub struct COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND(pub i32);
334pub const COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_DIRECTORY: COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND =
335    COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND(1i32);
336pub const COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_FILE: COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND =
337    COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND(0i32);
338#[repr(transparent)]
339#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
340pub struct COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION(pub i32);
341pub const COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_ONLY:
342    COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION = COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION(0i32);
343pub const COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_WRITE:
344    COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION = COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION(1i32);
345#[repr(transparent)]
346#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
347pub struct COREWEBVIEW2_FRAME_KIND(pub i32);
348pub const COREWEBVIEW2_FRAME_KIND_EMBED: COREWEBVIEW2_FRAME_KIND = COREWEBVIEW2_FRAME_KIND(3i32);
349pub const COREWEBVIEW2_FRAME_KIND_IFRAME: COREWEBVIEW2_FRAME_KIND = COREWEBVIEW2_FRAME_KIND(2i32);
350pub const COREWEBVIEW2_FRAME_KIND_MAIN_FRAME: COREWEBVIEW2_FRAME_KIND =
351    COREWEBVIEW2_FRAME_KIND(1i32);
352pub const COREWEBVIEW2_FRAME_KIND_OBJECT: COREWEBVIEW2_FRAME_KIND = COREWEBVIEW2_FRAME_KIND(4i32);
353pub const COREWEBVIEW2_FRAME_KIND_UNKNOWN: COREWEBVIEW2_FRAME_KIND = COREWEBVIEW2_FRAME_KIND(0i32);
354#[repr(transparent)]
355#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
356pub struct COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND(pub i32);
357pub const COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW: COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND =
358    COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND(1i32);
359pub const COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY: COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND =
360    COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND(0i32);
361pub const COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS: COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND =
362    COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND(2i32);
363#[repr(transparent)]
364#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
365pub struct COREWEBVIEW2_KEY_EVENT_KIND(pub i32);
366pub const COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN: COREWEBVIEW2_KEY_EVENT_KIND =
367    COREWEBVIEW2_KEY_EVENT_KIND(0i32);
368pub const COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP: COREWEBVIEW2_KEY_EVENT_KIND =
369    COREWEBVIEW2_KEY_EVENT_KIND(1i32);
370pub const COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN: COREWEBVIEW2_KEY_EVENT_KIND =
371    COREWEBVIEW2_KEY_EVENT_KIND(2i32);
372pub const COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP: COREWEBVIEW2_KEY_EVENT_KIND =
373    COREWEBVIEW2_KEY_EVENT_KIND(3i32);
374#[repr(transparent)]
375#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
376pub struct COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL(pub i32);
377pub const COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL =
378    COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL(1i32);
379pub const COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL =
380    COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL(0i32);
381#[repr(transparent)]
382#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
383pub struct COREWEBVIEW2_MOUSE_EVENT_KIND(pub i32);
384pub const COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL: COREWEBVIEW2_MOUSE_EVENT_KIND =
385    COREWEBVIEW2_MOUSE_EVENT_KIND(526i32);
386pub const COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE: COREWEBVIEW2_MOUSE_EVENT_KIND =
387    COREWEBVIEW2_MOUSE_EVENT_KIND(675i32);
388pub const COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK: COREWEBVIEW2_MOUSE_EVENT_KIND =
389    COREWEBVIEW2_MOUSE_EVENT_KIND(515i32);
390pub const COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN: COREWEBVIEW2_MOUSE_EVENT_KIND =
391    COREWEBVIEW2_MOUSE_EVENT_KIND(513i32);
392pub const COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP: COREWEBVIEW2_MOUSE_EVENT_KIND =
393    COREWEBVIEW2_MOUSE_EVENT_KIND(514i32);
394pub const COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK: COREWEBVIEW2_MOUSE_EVENT_KIND =
395    COREWEBVIEW2_MOUSE_EVENT_KIND(521i32);
396pub const COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN: COREWEBVIEW2_MOUSE_EVENT_KIND =
397    COREWEBVIEW2_MOUSE_EVENT_KIND(519i32);
398pub const COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP: COREWEBVIEW2_MOUSE_EVENT_KIND =
399    COREWEBVIEW2_MOUSE_EVENT_KIND(520i32);
400pub const COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE: COREWEBVIEW2_MOUSE_EVENT_KIND =
401    COREWEBVIEW2_MOUSE_EVENT_KIND(512i32);
402pub const COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_DOWN:
403    COREWEBVIEW2_MOUSE_EVENT_KIND = COREWEBVIEW2_MOUSE_EVENT_KIND(164i32);
404pub const COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_UP: COREWEBVIEW2_MOUSE_EVENT_KIND =
405    COREWEBVIEW2_MOUSE_EVENT_KIND(165i32);
406pub const COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK: COREWEBVIEW2_MOUSE_EVENT_KIND =
407    COREWEBVIEW2_MOUSE_EVENT_KIND(518i32);
408pub const COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN: COREWEBVIEW2_MOUSE_EVENT_KIND =
409    COREWEBVIEW2_MOUSE_EVENT_KIND(516i32);
410pub const COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP: COREWEBVIEW2_MOUSE_EVENT_KIND =
411    COREWEBVIEW2_MOUSE_EVENT_KIND(517i32);
412pub const COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL: COREWEBVIEW2_MOUSE_EVENT_KIND =
413    COREWEBVIEW2_MOUSE_EVENT_KIND(522i32);
414pub const COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK: COREWEBVIEW2_MOUSE_EVENT_KIND =
415    COREWEBVIEW2_MOUSE_EVENT_KIND(525i32);
416pub const COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN: COREWEBVIEW2_MOUSE_EVENT_KIND =
417    COREWEBVIEW2_MOUSE_EVENT_KIND(523i32);
418pub const COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP: COREWEBVIEW2_MOUSE_EVENT_KIND =
419    COREWEBVIEW2_MOUSE_EVENT_KIND(524i32);
420#[repr(transparent)]
421#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
422pub struct COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(pub i32);
423impl COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS {
424    pub const fn contains(&self, other: Self) -> bool {
425        self.0 & other.0 == other.0
426    }
427}
428impl core::ops::BitOr for COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS {
429    type Output = Self;
430    fn bitor(self, other: Self) -> Self {
431        Self(self.0 | other.0)
432    }
433}
434impl core::ops::BitAnd for COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS {
435    type Output = Self;
436    fn bitand(self, other: Self) -> Self {
437        Self(self.0 & other.0)
438    }
439}
440impl core::ops::BitOrAssign for COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS {
441    fn bitor_assign(&mut self, other: Self) {
442        self.0.bitor_assign(other.0)
443    }
444}
445impl core::ops::BitAndAssign for COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS {
446    fn bitand_assign(&mut self, other: Self) {
447        self.0.bitand_assign(other.0)
448    }
449}
450impl core::ops::Not for COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS {
451    type Output = Self;
452    fn not(self) -> Self {
453        Self(self.0.not())
454    }
455}
456pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_CONTROL: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS =
457    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(8i32);
458pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS =
459    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(1i32);
460pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_MIDDLE_BUTTON:
461    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(16i32);
462pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS =
463    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(0i32);
464pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_RIGHT_BUTTON:
465    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(2i32);
466pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_SHIFT: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS =
467    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(4i32);
468pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON1: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS =
469    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(32i32);
470pub const COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON2: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS =
471    COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(64i32);
472#[repr(transparent)]
473#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
474pub struct COREWEBVIEW2_MOVE_FOCUS_REASON(pub i32);
475pub const COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT: COREWEBVIEW2_MOVE_FOCUS_REASON =
476    COREWEBVIEW2_MOVE_FOCUS_REASON(1i32);
477pub const COREWEBVIEW2_MOVE_FOCUS_REASON_PREVIOUS: COREWEBVIEW2_MOVE_FOCUS_REASON =
478    COREWEBVIEW2_MOVE_FOCUS_REASON(2i32);
479pub const COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC: COREWEBVIEW2_MOVE_FOCUS_REASON =
480    COREWEBVIEW2_MOVE_FOCUS_REASON(0i32);
481#[repr(transparent)]
482#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
483pub struct COREWEBVIEW2_NAVIGATION_KIND(pub i32);
484pub const COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD: COREWEBVIEW2_NAVIGATION_KIND =
485    COREWEBVIEW2_NAVIGATION_KIND(1i32);
486pub const COREWEBVIEW2_NAVIGATION_KIND_NEW_DOCUMENT: COREWEBVIEW2_NAVIGATION_KIND =
487    COREWEBVIEW2_NAVIGATION_KIND(2i32);
488pub const COREWEBVIEW2_NAVIGATION_KIND_RELOAD: COREWEBVIEW2_NAVIGATION_KIND =
489    COREWEBVIEW2_NAVIGATION_KIND(0i32);
490#[repr(transparent)]
491#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
492pub struct COREWEBVIEW2_NON_CLIENT_REGION_KIND(pub i32);
493pub const COREWEBVIEW2_NON_CLIENT_REGION_KIND_CAPTION: COREWEBVIEW2_NON_CLIENT_REGION_KIND =
494    COREWEBVIEW2_NON_CLIENT_REGION_KIND(2i32);
495pub const COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLIENT: COREWEBVIEW2_NON_CLIENT_REGION_KIND =
496    COREWEBVIEW2_NON_CLIENT_REGION_KIND(1i32);
497pub const COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLOSE: COREWEBVIEW2_NON_CLIENT_REGION_KIND =
498    COREWEBVIEW2_NON_CLIENT_REGION_KIND(20i32);
499pub const COREWEBVIEW2_NON_CLIENT_REGION_KIND_MAXIMIZE: COREWEBVIEW2_NON_CLIENT_REGION_KIND =
500    COREWEBVIEW2_NON_CLIENT_REGION_KIND(9i32);
501pub const COREWEBVIEW2_NON_CLIENT_REGION_KIND_MINIMIZE: COREWEBVIEW2_NON_CLIENT_REGION_KIND =
502    COREWEBVIEW2_NON_CLIENT_REGION_KIND(8i32);
503pub const COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE: COREWEBVIEW2_NON_CLIENT_REGION_KIND =
504    COREWEBVIEW2_NON_CLIENT_REGION_KIND(0i32);
505#[repr(transparent)]
506#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
507pub struct COREWEBVIEW2_PDF_TOOLBAR_ITEMS(pub i32);
508impl COREWEBVIEW2_PDF_TOOLBAR_ITEMS {
509    pub const fn contains(&self, other: Self) -> bool {
510        self.0 & other.0 == other.0
511    }
512}
513impl core::ops::BitOr for COREWEBVIEW2_PDF_TOOLBAR_ITEMS {
514    type Output = Self;
515    fn bitor(self, other: Self) -> Self {
516        Self(self.0 | other.0)
517    }
518}
519impl core::ops::BitAnd for COREWEBVIEW2_PDF_TOOLBAR_ITEMS {
520    type Output = Self;
521    fn bitand(self, other: Self) -> Self {
522        Self(self.0 & other.0)
523    }
524}
525impl core::ops::BitOrAssign for COREWEBVIEW2_PDF_TOOLBAR_ITEMS {
526    fn bitor_assign(&mut self, other: Self) {
527        self.0.bitor_assign(other.0)
528    }
529}
530impl core::ops::BitAndAssign for COREWEBVIEW2_PDF_TOOLBAR_ITEMS {
531    fn bitand_assign(&mut self, other: Self) {
532        self.0.bitand_assign(other.0)
533    }
534}
535impl core::ops::Not for COREWEBVIEW2_PDF_TOOLBAR_ITEMS {
536    type Output = Self;
537    fn not(self) -> Self {
538        Self(self.0.not())
539    }
540}
541pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_BOOKMARKS: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
542    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(256i32);
543pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FIT_PAGE: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
544    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(64i32);
545pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FULL_SCREEN: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
546    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(2048i32);
547pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_MORE_SETTINGS: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
548    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(4096i32);
549pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_NONE: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
550    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(0i32);
551pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_LAYOUT: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
552    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(128i32);
553pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_SELECTOR: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
554    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(512i32);
555pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PRINT: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
556    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(2i32);
557pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ROTATE: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
558    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(32i32);
559pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
560    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(1i32);
561pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE_AS: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
562    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(4i32);
563pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SEARCH: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
564    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(1024i32);
565pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_IN: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
566    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(8i32);
567pub const COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_OUT: COREWEBVIEW2_PDF_TOOLBAR_ITEMS =
568    COREWEBVIEW2_PDF_TOOLBAR_ITEMS(16i32);
569#[repr(transparent)]
570#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
571pub struct COREWEBVIEW2_PERMISSION_KIND(pub i32);
572pub const COREWEBVIEW2_PERMISSION_KIND_AUTOPLAY: COREWEBVIEW2_PERMISSION_KIND =
573    COREWEBVIEW2_PERMISSION_KIND(9i32);
574pub const COREWEBVIEW2_PERMISSION_KIND_CAMERA: COREWEBVIEW2_PERMISSION_KIND =
575    COREWEBVIEW2_PERMISSION_KIND(2i32);
576pub const COREWEBVIEW2_PERMISSION_KIND_CLIPBOARD_READ: COREWEBVIEW2_PERMISSION_KIND =
577    COREWEBVIEW2_PERMISSION_KIND(6i32);
578pub const COREWEBVIEW2_PERMISSION_KIND_FILE_READ_WRITE: COREWEBVIEW2_PERMISSION_KIND =
579    COREWEBVIEW2_PERMISSION_KIND(8i32);
580pub const COREWEBVIEW2_PERMISSION_KIND_GEOLOCATION: COREWEBVIEW2_PERMISSION_KIND =
581    COREWEBVIEW2_PERMISSION_KIND(3i32);
582pub const COREWEBVIEW2_PERMISSION_KIND_LOCAL_FONTS: COREWEBVIEW2_PERMISSION_KIND =
583    COREWEBVIEW2_PERMISSION_KIND(10i32);
584pub const COREWEBVIEW2_PERMISSION_KIND_MICROPHONE: COREWEBVIEW2_PERMISSION_KIND =
585    COREWEBVIEW2_PERMISSION_KIND(1i32);
586pub const COREWEBVIEW2_PERMISSION_KIND_MIDI_SYSTEM_EXCLUSIVE_MESSAGES:
587    COREWEBVIEW2_PERMISSION_KIND = COREWEBVIEW2_PERMISSION_KIND(11i32);
588pub const COREWEBVIEW2_PERMISSION_KIND_MULTIPLE_AUTOMATIC_DOWNLOADS: COREWEBVIEW2_PERMISSION_KIND =
589    COREWEBVIEW2_PERMISSION_KIND(7i32);
590pub const COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS: COREWEBVIEW2_PERMISSION_KIND =
591    COREWEBVIEW2_PERMISSION_KIND(4i32);
592pub const COREWEBVIEW2_PERMISSION_KIND_OTHER_SENSORS: COREWEBVIEW2_PERMISSION_KIND =
593    COREWEBVIEW2_PERMISSION_KIND(5i32);
594pub const COREWEBVIEW2_PERMISSION_KIND_UNKNOWN_PERMISSION: COREWEBVIEW2_PERMISSION_KIND =
595    COREWEBVIEW2_PERMISSION_KIND(0i32);
596pub const COREWEBVIEW2_PERMISSION_KIND_WINDOW_MANAGEMENT: COREWEBVIEW2_PERMISSION_KIND =
597    COREWEBVIEW2_PERMISSION_KIND(12i32);
598#[repr(transparent)]
599#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
600pub struct COREWEBVIEW2_PERMISSION_STATE(pub i32);
601pub const COREWEBVIEW2_PERMISSION_STATE_ALLOW: COREWEBVIEW2_PERMISSION_STATE =
602    COREWEBVIEW2_PERMISSION_STATE(1i32);
603pub const COREWEBVIEW2_PERMISSION_STATE_DEFAULT: COREWEBVIEW2_PERMISSION_STATE =
604    COREWEBVIEW2_PERMISSION_STATE(0i32);
605pub const COREWEBVIEW2_PERMISSION_STATE_DENY: COREWEBVIEW2_PERMISSION_STATE =
606    COREWEBVIEW2_PERMISSION_STATE(2i32);
607#[repr(C)]
608#[derive(Clone, Copy, Debug, Default, PartialEq)]
609pub struct COREWEBVIEW2_PHYSICAL_KEY_STATUS {
610    pub RepeatCount: u32,
611    pub ScanCode: u32,
612    pub IsExtendedKey: windows_core::BOOL,
613    pub IsMenuKeyDown: windows_core::BOOL,
614    pub WasKeyDown: windows_core::BOOL,
615    pub IsKeyReleased: windows_core::BOOL,
616}
617#[repr(transparent)]
618#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
619pub struct COREWEBVIEW2_POINTER_EVENT_KIND(pub i32);
620pub const COREWEBVIEW2_POINTER_EVENT_KIND_ACTIVATE: COREWEBVIEW2_POINTER_EVENT_KIND =
621    COREWEBVIEW2_POINTER_EVENT_KIND(587i32);
622pub const COREWEBVIEW2_POINTER_EVENT_KIND_DOWN: COREWEBVIEW2_POINTER_EVENT_KIND =
623    COREWEBVIEW2_POINTER_EVENT_KIND(582i32);
624pub const COREWEBVIEW2_POINTER_EVENT_KIND_ENTER: COREWEBVIEW2_POINTER_EVENT_KIND =
625    COREWEBVIEW2_POINTER_EVENT_KIND(585i32);
626pub const COREWEBVIEW2_POINTER_EVENT_KIND_LEAVE: COREWEBVIEW2_POINTER_EVENT_KIND =
627    COREWEBVIEW2_POINTER_EVENT_KIND(586i32);
628pub const COREWEBVIEW2_POINTER_EVENT_KIND_UP: COREWEBVIEW2_POINTER_EVENT_KIND =
629    COREWEBVIEW2_POINTER_EVENT_KIND(583i32);
630pub const COREWEBVIEW2_POINTER_EVENT_KIND_UPDATE: COREWEBVIEW2_POINTER_EVENT_KIND =
631    COREWEBVIEW2_POINTER_EVENT_KIND(581i32);
632#[repr(transparent)]
633#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
634pub struct COREWEBVIEW2_PREFERRED_COLOR_SCHEME(pub i32);
635pub const COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO: COREWEBVIEW2_PREFERRED_COLOR_SCHEME =
636    COREWEBVIEW2_PREFERRED_COLOR_SCHEME(0i32);
637pub const COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK: COREWEBVIEW2_PREFERRED_COLOR_SCHEME =
638    COREWEBVIEW2_PREFERRED_COLOR_SCHEME(2i32);
639pub const COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT: COREWEBVIEW2_PREFERRED_COLOR_SCHEME =
640    COREWEBVIEW2_PREFERRED_COLOR_SCHEME(1i32);
641#[repr(transparent)]
642#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
643pub struct COREWEBVIEW2_PRINT_COLLATION(pub i32);
644pub const COREWEBVIEW2_PRINT_COLLATION_COLLATED: COREWEBVIEW2_PRINT_COLLATION =
645    COREWEBVIEW2_PRINT_COLLATION(1i32);
646pub const COREWEBVIEW2_PRINT_COLLATION_DEFAULT: COREWEBVIEW2_PRINT_COLLATION =
647    COREWEBVIEW2_PRINT_COLLATION(0i32);
648pub const COREWEBVIEW2_PRINT_COLLATION_UNCOLLATED: COREWEBVIEW2_PRINT_COLLATION =
649    COREWEBVIEW2_PRINT_COLLATION(2i32);
650#[repr(transparent)]
651#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
652pub struct COREWEBVIEW2_PRINT_COLOR_MODE(pub i32);
653pub const COREWEBVIEW2_PRINT_COLOR_MODE_COLOR: COREWEBVIEW2_PRINT_COLOR_MODE =
654    COREWEBVIEW2_PRINT_COLOR_MODE(1i32);
655pub const COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT: COREWEBVIEW2_PRINT_COLOR_MODE =
656    COREWEBVIEW2_PRINT_COLOR_MODE(0i32);
657pub const COREWEBVIEW2_PRINT_COLOR_MODE_GRAYSCALE: COREWEBVIEW2_PRINT_COLOR_MODE =
658    COREWEBVIEW2_PRINT_COLOR_MODE(2i32);
659#[repr(transparent)]
660#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
661pub struct COREWEBVIEW2_PRINT_DIALOG_KIND(pub i32);
662pub const COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER: COREWEBVIEW2_PRINT_DIALOG_KIND =
663    COREWEBVIEW2_PRINT_DIALOG_KIND(0i32);
664pub const COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM: COREWEBVIEW2_PRINT_DIALOG_KIND =
665    COREWEBVIEW2_PRINT_DIALOG_KIND(1i32);
666#[repr(transparent)]
667#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
668pub struct COREWEBVIEW2_PRINT_DUPLEX(pub i32);
669pub const COREWEBVIEW2_PRINT_DUPLEX_DEFAULT: COREWEBVIEW2_PRINT_DUPLEX =
670    COREWEBVIEW2_PRINT_DUPLEX(0i32);
671pub const COREWEBVIEW2_PRINT_DUPLEX_ONE_SIDED: COREWEBVIEW2_PRINT_DUPLEX =
672    COREWEBVIEW2_PRINT_DUPLEX(1i32);
673pub const COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_LONG_EDGE: COREWEBVIEW2_PRINT_DUPLEX =
674    COREWEBVIEW2_PRINT_DUPLEX(2i32);
675pub const COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_SHORT_EDGE: COREWEBVIEW2_PRINT_DUPLEX =
676    COREWEBVIEW2_PRINT_DUPLEX(3i32);
677#[repr(transparent)]
678#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
679pub struct COREWEBVIEW2_PRINT_MEDIA_SIZE(pub i32);
680pub const COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM: COREWEBVIEW2_PRINT_MEDIA_SIZE =
681    COREWEBVIEW2_PRINT_MEDIA_SIZE(1i32);
682pub const COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT: COREWEBVIEW2_PRINT_MEDIA_SIZE =
683    COREWEBVIEW2_PRINT_MEDIA_SIZE(0i32);
684#[repr(transparent)]
685#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
686pub struct COREWEBVIEW2_PRINT_ORIENTATION(pub i32);
687pub const COREWEBVIEW2_PRINT_ORIENTATION_LANDSCAPE: COREWEBVIEW2_PRINT_ORIENTATION =
688    COREWEBVIEW2_PRINT_ORIENTATION(1i32);
689pub const COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT: COREWEBVIEW2_PRINT_ORIENTATION =
690    COREWEBVIEW2_PRINT_ORIENTATION(0i32);
691#[repr(transparent)]
692#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
693pub struct COREWEBVIEW2_PRINT_STATUS(pub i32);
694pub const COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR: COREWEBVIEW2_PRINT_STATUS =
695    COREWEBVIEW2_PRINT_STATUS(2i32);
696pub const COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE: COREWEBVIEW2_PRINT_STATUS =
697    COREWEBVIEW2_PRINT_STATUS(1i32);
698pub const COREWEBVIEW2_PRINT_STATUS_SUCCEEDED: COREWEBVIEW2_PRINT_STATUS =
699    COREWEBVIEW2_PRINT_STATUS(0i32);
700#[repr(transparent)]
701#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
702pub struct COREWEBVIEW2_PROCESS_FAILED_KIND(pub i32);
703pub const COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED:
704    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(0i32);
705pub const COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED:
706    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(3i32);
707pub const COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED: COREWEBVIEW2_PROCESS_FAILED_KIND =
708    COREWEBVIEW2_PROCESS_FAILED_KIND(6i32);
709pub const COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_BROKER_PROCESS_EXITED:
710    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(8i32);
711pub const COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_PLUGIN_PROCESS_EXITED:
712    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(7i32);
713pub const COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED: COREWEBVIEW2_PROCESS_FAILED_KIND =
714    COREWEBVIEW2_PROCESS_FAILED_KIND(1i32);
715pub const COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE:
716    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(2i32);
717pub const COREWEBVIEW2_PROCESS_FAILED_KIND_SANDBOX_HELPER_PROCESS_EXITED:
718    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(5i32);
719pub const COREWEBVIEW2_PROCESS_FAILED_KIND_UNKNOWN_PROCESS_EXITED:
720    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(9i32);
721pub const COREWEBVIEW2_PROCESS_FAILED_KIND_UTILITY_PROCESS_EXITED:
722    COREWEBVIEW2_PROCESS_FAILED_KIND = COREWEBVIEW2_PROCESS_FAILED_KIND(4i32);
723#[repr(transparent)]
724#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
725pub struct COREWEBVIEW2_PROCESS_FAILED_REASON(pub i32);
726pub const COREWEBVIEW2_PROCESS_FAILED_REASON_CRASHED: COREWEBVIEW2_PROCESS_FAILED_REASON =
727    COREWEBVIEW2_PROCESS_FAILED_REASON(3i32);
728pub const COREWEBVIEW2_PROCESS_FAILED_REASON_LAUNCH_FAILED: COREWEBVIEW2_PROCESS_FAILED_REASON =
729    COREWEBVIEW2_PROCESS_FAILED_REASON(4i32);
730pub const COREWEBVIEW2_PROCESS_FAILED_REASON_OUT_OF_MEMORY: COREWEBVIEW2_PROCESS_FAILED_REASON =
731    COREWEBVIEW2_PROCESS_FAILED_REASON(5i32);
732pub const COREWEBVIEW2_PROCESS_FAILED_REASON_PROFILE_DELETED: COREWEBVIEW2_PROCESS_FAILED_REASON =
733    COREWEBVIEW2_PROCESS_FAILED_REASON(6i32);
734pub const COREWEBVIEW2_PROCESS_FAILED_REASON_TERMINATED: COREWEBVIEW2_PROCESS_FAILED_REASON =
735    COREWEBVIEW2_PROCESS_FAILED_REASON(2i32);
736pub const COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED: COREWEBVIEW2_PROCESS_FAILED_REASON =
737    COREWEBVIEW2_PROCESS_FAILED_REASON(0i32);
738pub const COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE: COREWEBVIEW2_PROCESS_FAILED_REASON =
739    COREWEBVIEW2_PROCESS_FAILED_REASON(1i32);
740#[repr(transparent)]
741#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
742pub struct COREWEBVIEW2_PROCESS_KIND(pub i32);
743pub const COREWEBVIEW2_PROCESS_KIND_BROWSER: COREWEBVIEW2_PROCESS_KIND =
744    COREWEBVIEW2_PROCESS_KIND(0i32);
745pub const COREWEBVIEW2_PROCESS_KIND_GPU: COREWEBVIEW2_PROCESS_KIND =
746    COREWEBVIEW2_PROCESS_KIND(4i32);
747pub const COREWEBVIEW2_PROCESS_KIND_PPAPI_BROKER: COREWEBVIEW2_PROCESS_KIND =
748    COREWEBVIEW2_PROCESS_KIND(6i32);
749pub const COREWEBVIEW2_PROCESS_KIND_PPAPI_PLUGIN: COREWEBVIEW2_PROCESS_KIND =
750    COREWEBVIEW2_PROCESS_KIND(5i32);
751pub const COREWEBVIEW2_PROCESS_KIND_RENDERER: COREWEBVIEW2_PROCESS_KIND =
752    COREWEBVIEW2_PROCESS_KIND(1i32);
753pub const COREWEBVIEW2_PROCESS_KIND_SANDBOX_HELPER: COREWEBVIEW2_PROCESS_KIND =
754    COREWEBVIEW2_PROCESS_KIND(3i32);
755pub const COREWEBVIEW2_PROCESS_KIND_UTILITY: COREWEBVIEW2_PROCESS_KIND =
756    COREWEBVIEW2_PROCESS_KIND(2i32);
757#[repr(transparent)]
758#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
759pub struct COREWEBVIEW2_RELEASE_CHANNELS(pub i32);
760impl COREWEBVIEW2_RELEASE_CHANNELS {
761    pub const fn contains(&self, other: Self) -> bool {
762        self.0 & other.0 == other.0
763    }
764}
765impl core::ops::BitOr for COREWEBVIEW2_RELEASE_CHANNELS {
766    type Output = Self;
767    fn bitor(self, other: Self) -> Self {
768        Self(self.0 | other.0)
769    }
770}
771impl core::ops::BitAnd for COREWEBVIEW2_RELEASE_CHANNELS {
772    type Output = Self;
773    fn bitand(self, other: Self) -> Self {
774        Self(self.0 & other.0)
775    }
776}
777impl core::ops::BitOrAssign for COREWEBVIEW2_RELEASE_CHANNELS {
778    fn bitor_assign(&mut self, other: Self) {
779        self.0.bitor_assign(other.0)
780    }
781}
782impl core::ops::BitAndAssign for COREWEBVIEW2_RELEASE_CHANNELS {
783    fn bitand_assign(&mut self, other: Self) {
784        self.0.bitand_assign(other.0)
785    }
786}
787impl core::ops::Not for COREWEBVIEW2_RELEASE_CHANNELS {
788    type Output = Self;
789    fn not(self) -> Self {
790        Self(self.0.not())
791    }
792}
793pub const COREWEBVIEW2_RELEASE_CHANNELS_BETA: COREWEBVIEW2_RELEASE_CHANNELS =
794    COREWEBVIEW2_RELEASE_CHANNELS(2i32);
795pub const COREWEBVIEW2_RELEASE_CHANNELS_CANARY: COREWEBVIEW2_RELEASE_CHANNELS =
796    COREWEBVIEW2_RELEASE_CHANNELS(8i32);
797pub const COREWEBVIEW2_RELEASE_CHANNELS_DEV: COREWEBVIEW2_RELEASE_CHANNELS =
798    COREWEBVIEW2_RELEASE_CHANNELS(4i32);
799pub const COREWEBVIEW2_RELEASE_CHANNELS_NONE: COREWEBVIEW2_RELEASE_CHANNELS =
800    COREWEBVIEW2_RELEASE_CHANNELS(0i32);
801pub const COREWEBVIEW2_RELEASE_CHANNELS_STABLE: COREWEBVIEW2_RELEASE_CHANNELS =
802    COREWEBVIEW2_RELEASE_CHANNELS(1i32);
803#[repr(transparent)]
804#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
805pub struct COREWEBVIEW2_SAVE_AS_KIND(pub i32);
806pub const COREWEBVIEW2_SAVE_AS_KIND_COMPLETE: COREWEBVIEW2_SAVE_AS_KIND =
807    COREWEBVIEW2_SAVE_AS_KIND(3i32);
808pub const COREWEBVIEW2_SAVE_AS_KIND_DEFAULT: COREWEBVIEW2_SAVE_AS_KIND =
809    COREWEBVIEW2_SAVE_AS_KIND(0i32);
810pub const COREWEBVIEW2_SAVE_AS_KIND_HTML_ONLY: COREWEBVIEW2_SAVE_AS_KIND =
811    COREWEBVIEW2_SAVE_AS_KIND(1i32);
812pub const COREWEBVIEW2_SAVE_AS_KIND_SINGLE_FILE: COREWEBVIEW2_SAVE_AS_KIND =
813    COREWEBVIEW2_SAVE_AS_KIND(2i32);
814#[repr(transparent)]
815#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
816pub struct COREWEBVIEW2_SAVE_AS_UI_RESULT(pub i32);
817pub const COREWEBVIEW2_SAVE_AS_UI_RESULT_CANCELLED: COREWEBVIEW2_SAVE_AS_UI_RESULT =
818    COREWEBVIEW2_SAVE_AS_UI_RESULT(4i32);
819pub const COREWEBVIEW2_SAVE_AS_UI_RESULT_FILE_ALREADY_EXISTS: COREWEBVIEW2_SAVE_AS_UI_RESULT =
820    COREWEBVIEW2_SAVE_AS_UI_RESULT(2i32);
821pub const COREWEBVIEW2_SAVE_AS_UI_RESULT_INVALID_PATH: COREWEBVIEW2_SAVE_AS_UI_RESULT =
822    COREWEBVIEW2_SAVE_AS_UI_RESULT(1i32);
823pub const COREWEBVIEW2_SAVE_AS_UI_RESULT_KIND_NOT_SUPPORTED: COREWEBVIEW2_SAVE_AS_UI_RESULT =
824    COREWEBVIEW2_SAVE_AS_UI_RESULT(3i32);
825pub const COREWEBVIEW2_SAVE_AS_UI_RESULT_SUCCESS: COREWEBVIEW2_SAVE_AS_UI_RESULT =
826    COREWEBVIEW2_SAVE_AS_UI_RESULT(0i32);
827#[repr(transparent)]
828#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
829pub struct COREWEBVIEW2_SCRIPT_DIALOG_KIND(pub i32);
830pub const COREWEBVIEW2_SCRIPT_DIALOG_KIND_ALERT: COREWEBVIEW2_SCRIPT_DIALOG_KIND =
831    COREWEBVIEW2_SCRIPT_DIALOG_KIND(0i32);
832pub const COREWEBVIEW2_SCRIPT_DIALOG_KIND_BEFOREUNLOAD: COREWEBVIEW2_SCRIPT_DIALOG_KIND =
833    COREWEBVIEW2_SCRIPT_DIALOG_KIND(3i32);
834pub const COREWEBVIEW2_SCRIPT_DIALOG_KIND_CONFIRM: COREWEBVIEW2_SCRIPT_DIALOG_KIND =
835    COREWEBVIEW2_SCRIPT_DIALOG_KIND(1i32);
836pub const COREWEBVIEW2_SCRIPT_DIALOG_KIND_PROMPT: COREWEBVIEW2_SCRIPT_DIALOG_KIND =
837    COREWEBVIEW2_SCRIPT_DIALOG_KIND(2i32);
838#[repr(transparent)]
839#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
840pub struct COREWEBVIEW2_SCROLLBAR_STYLE(pub i32);
841pub const COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT: COREWEBVIEW2_SCROLLBAR_STYLE =
842    COREWEBVIEW2_SCROLLBAR_STYLE(0i32);
843pub const COREWEBVIEW2_SCROLLBAR_STYLE_FLUENT_OVERLAY: COREWEBVIEW2_SCROLLBAR_STYLE =
844    COREWEBVIEW2_SCROLLBAR_STYLE(1i32);
845#[repr(transparent)]
846#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
847pub struct COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION(pub i32);
848pub const COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW:
849    COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION =
850    COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION(0i32);
851pub const COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_CANCEL:
852    COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION =
853    COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION(1i32);
854pub const COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_DEFAULT:
855    COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION =
856    COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION(2i32);
857#[repr(transparent)]
858#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
859pub struct COREWEBVIEW2_SHARED_BUFFER_ACCESS(pub i32);
860pub const COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY: COREWEBVIEW2_SHARED_BUFFER_ACCESS =
861    COREWEBVIEW2_SHARED_BUFFER_ACCESS(0i32);
862pub const COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_WRITE: COREWEBVIEW2_SHARED_BUFFER_ACCESS =
863    COREWEBVIEW2_SHARED_BUFFER_ACCESS(1i32);
864#[repr(transparent)]
865#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
866pub struct COREWEBVIEW2_TEXT_DIRECTION_KIND(pub i32);
867pub const COREWEBVIEW2_TEXT_DIRECTION_KIND_DEFAULT: COREWEBVIEW2_TEXT_DIRECTION_KIND =
868    COREWEBVIEW2_TEXT_DIRECTION_KIND(0i32);
869pub const COREWEBVIEW2_TEXT_DIRECTION_KIND_LEFT_TO_RIGHT: COREWEBVIEW2_TEXT_DIRECTION_KIND =
870    COREWEBVIEW2_TEXT_DIRECTION_KIND(1i32);
871pub const COREWEBVIEW2_TEXT_DIRECTION_KIND_RIGHT_TO_LEFT: COREWEBVIEW2_TEXT_DIRECTION_KIND =
872    COREWEBVIEW2_TEXT_DIRECTION_KIND(2i32);
873#[repr(transparent)]
874#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
875pub struct COREWEBVIEW2_TRACKING_PREVENTION_LEVEL(pub i32);
876pub const COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL =
877    COREWEBVIEW2_TRACKING_PREVENTION_LEVEL(2i32);
878pub const COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL =
879    COREWEBVIEW2_TRACKING_PREVENTION_LEVEL(1i32);
880pub const COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL =
881    COREWEBVIEW2_TRACKING_PREVENTION_LEVEL(0i32);
882pub const COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_STRICT: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL =
883    COREWEBVIEW2_TRACKING_PREVENTION_LEVEL(3i32);
884#[repr(transparent)]
885#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
886pub struct COREWEBVIEW2_WEB_ERROR_STATUS(pub i32);
887pub const COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT: COREWEBVIEW2_WEB_ERROR_STATUS =
888    COREWEBVIEW2_WEB_ERROR_STATUS(12i32);
889pub const COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT:
890    COREWEBVIEW2_WEB_ERROR_STATUS = COREWEBVIEW2_WEB_ERROR_STATUS(1i32);
891pub const COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED: COREWEBVIEW2_WEB_ERROR_STATUS =
892    COREWEBVIEW2_WEB_ERROR_STATUS(2i32);
893pub const COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID: COREWEBVIEW2_WEB_ERROR_STATUS =
894    COREWEBVIEW2_WEB_ERROR_STATUS(5i32);
895pub const COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED: COREWEBVIEW2_WEB_ERROR_STATUS =
896    COREWEBVIEW2_WEB_ERROR_STATUS(4i32);
897pub const COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS:
898    COREWEBVIEW2_WEB_ERROR_STATUS = COREWEBVIEW2_WEB_ERROR_STATUS(3i32);
899pub const COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED: COREWEBVIEW2_WEB_ERROR_STATUS =
900    COREWEBVIEW2_WEB_ERROR_STATUS(9i32);
901pub const COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET: COREWEBVIEW2_WEB_ERROR_STATUS =
902    COREWEBVIEW2_WEB_ERROR_STATUS(10i32);
903pub const COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED: COREWEBVIEW2_WEB_ERROR_STATUS =
904    COREWEBVIEW2_WEB_ERROR_STATUS(11i32);
905pub const COREWEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE:
906    COREWEBVIEW2_WEB_ERROR_STATUS = COREWEBVIEW2_WEB_ERROR_STATUS(8i32);
907pub const COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED: COREWEBVIEW2_WEB_ERROR_STATUS =
908    COREWEBVIEW2_WEB_ERROR_STATUS(13i32);
909pub const COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED: COREWEBVIEW2_WEB_ERROR_STATUS =
910    COREWEBVIEW2_WEB_ERROR_STATUS(14i32);
911pub const COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED: COREWEBVIEW2_WEB_ERROR_STATUS =
912    COREWEBVIEW2_WEB_ERROR_STATUS(15i32);
913pub const COREWEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE: COREWEBVIEW2_WEB_ERROR_STATUS =
914    COREWEBVIEW2_WEB_ERROR_STATUS(6i32);
915pub const COREWEBVIEW2_WEB_ERROR_STATUS_TIMEOUT: COREWEBVIEW2_WEB_ERROR_STATUS =
916    COREWEBVIEW2_WEB_ERROR_STATUS(7i32);
917pub const COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR: COREWEBVIEW2_WEB_ERROR_STATUS =
918    COREWEBVIEW2_WEB_ERROR_STATUS(16i32);
919pub const COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN: COREWEBVIEW2_WEB_ERROR_STATUS =
920    COREWEBVIEW2_WEB_ERROR_STATUS(0i32);
921pub const COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED:
922    COREWEBVIEW2_WEB_ERROR_STATUS = COREWEBVIEW2_WEB_ERROR_STATUS(17i32);
923pub const COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED:
924    COREWEBVIEW2_WEB_ERROR_STATUS = COREWEBVIEW2_WEB_ERROR_STATUS(18i32);
925#[repr(transparent)]
926#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
927pub struct COREWEBVIEW2_WEB_RESOURCE_CONTEXT(pub i32);
928pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
929    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(0i32);
930pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT:
931    COREWEBVIEW2_WEB_RESOURCE_CONTEXT = COREWEBVIEW2_WEB_RESOURCE_CONTEXT(15i32);
932pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
933    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(1i32);
934pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
935    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(10i32);
936pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
937    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(8i32);
938pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
939    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(5i32);
940pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
941    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(3i32);
942pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
943    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(12i32);
944pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
945    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(4i32);
946pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_OTHER: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
947    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(16i32);
948pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
949    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(14i32);
950pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
951    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(6i32);
952pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
953    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(13i32);
954pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
955    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(2i32);
956pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
957    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(9i32);
958pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
959    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(11i32);
960pub const COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST: COREWEBVIEW2_WEB_RESOURCE_CONTEXT =
961    COREWEBVIEW2_WEB_RESOURCE_CONTEXT(7i32);
962#[repr(transparent)]
963#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
964pub struct COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS(pub i32);
965impl COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS {
966    pub const fn contains(&self, other: Self) -> bool {
967        self.0 & other.0 == other.0
968    }
969}
970impl core::ops::BitOr for COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS {
971    type Output = Self;
972    fn bitor(self, other: Self) -> Self {
973        Self(self.0 | other.0)
974    }
975}
976impl core::ops::BitAnd for COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS {
977    type Output = Self;
978    fn bitand(self, other: Self) -> Self {
979        Self(self.0 & other.0)
980    }
981}
982impl core::ops::BitOrAssign for COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS {
983    fn bitor_assign(&mut self, other: Self) {
984        self.0.bitor_assign(other.0)
985    }
986}
987impl core::ops::BitAndAssign for COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS {
988    fn bitand_assign(&mut self, other: Self) {
989        self.0.bitand_assign(other.0)
990    }
991}
992impl core::ops::Not for COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS {
993    type Output = Self;
994    fn not(self) -> Self {
995        Self(self.0.not())
996    }
997}
998pub const COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_ALL:
999    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS =
1000    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS(-1i32);
1001pub const COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT:
1002    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS =
1003    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS(1i32);
1004pub const COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_NONE:
1005    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS =
1006    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS(0i32);
1007pub const COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_SERVICE_WORKER:
1008    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS =
1009    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS(4i32);
1010pub const COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_SHARED_WORKER:
1011    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS =
1012    COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS(2i32);
1013pub const CORE_WEBVIEW_TARGET_PRODUCT_VERSION: windows_core::PCWSTR =
1014    windows_core::w!("138.0.3351.48");
1015windows_core::imp::define_interface!(
1016    ICoreWebView2,
1017    ICoreWebView2_Vtbl,
1018    0x76eceacb_0462_4d94_ac83_423a6793775e
1019);
1020windows_core::imp::interface_hierarchy!(ICoreWebView2, windows_core::IUnknown);
1021impl ICoreWebView2 {
1022    pub unsafe fn Settings(&self) -> windows_core::Result<ICoreWebView2Settings> {
1023        unsafe {
1024            let mut result__ = core::mem::zeroed();
1025            (windows_core::Interface::vtable(self).Settings)(
1026                windows_core::Interface::as_raw(self),
1027                &mut result__,
1028            )
1029            .and_then(|| windows_core::Type::from_abi(result__))
1030        }
1031    }
1032    pub unsafe fn Source(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
1033        unsafe {
1034            (windows_core::Interface::vtable(self).Source)(
1035                windows_core::Interface::as_raw(self),
1036                uri as _,
1037            )
1038            .ok()
1039        }
1040    }
1041    pub unsafe fn Navigate<P0>(&self, uri: P0) -> windows_core::Result<()>
1042    where
1043        P0: windows_core::Param<windows_core::PCWSTR>,
1044    {
1045        unsafe {
1046            (windows_core::Interface::vtable(self).Navigate)(
1047                windows_core::Interface::as_raw(self),
1048                uri.param().abi(),
1049            )
1050            .ok()
1051        }
1052    }
1053    pub unsafe fn NavigateToString<P0>(&self, htmlcontent: P0) -> windows_core::Result<()>
1054    where
1055        P0: windows_core::Param<windows_core::PCWSTR>,
1056    {
1057        unsafe {
1058            (windows_core::Interface::vtable(self).NavigateToString)(
1059                windows_core::Interface::as_raw(self),
1060                htmlcontent.param().abi(),
1061            )
1062            .ok()
1063        }
1064    }
1065    pub unsafe fn add_NavigationStarting<P0>(
1066        &self,
1067        eventhandler: P0,
1068        token: *mut i64,
1069    ) -> windows_core::Result<()>
1070    where
1071        P0: windows_core::Param<ICoreWebView2NavigationStartingEventHandler>,
1072    {
1073        unsafe {
1074            (windows_core::Interface::vtable(self).add_NavigationStarting)(
1075                windows_core::Interface::as_raw(self),
1076                eventhandler.param().abi(),
1077                token as _,
1078            )
1079            .ok()
1080        }
1081    }
1082    pub unsafe fn remove_NavigationStarting(&self, token: i64) -> windows_core::Result<()> {
1083        unsafe {
1084            (windows_core::Interface::vtable(self).remove_NavigationStarting)(
1085                windows_core::Interface::as_raw(self),
1086                token,
1087            )
1088            .ok()
1089        }
1090    }
1091    pub unsafe fn add_ContentLoading<P0>(
1092        &self,
1093        eventhandler: P0,
1094        token: *mut i64,
1095    ) -> windows_core::Result<()>
1096    where
1097        P0: windows_core::Param<ICoreWebView2ContentLoadingEventHandler>,
1098    {
1099        unsafe {
1100            (windows_core::Interface::vtable(self).add_ContentLoading)(
1101                windows_core::Interface::as_raw(self),
1102                eventhandler.param().abi(),
1103                token as _,
1104            )
1105            .ok()
1106        }
1107    }
1108    pub unsafe fn remove_ContentLoading(&self, token: i64) -> windows_core::Result<()> {
1109        unsafe {
1110            (windows_core::Interface::vtable(self).remove_ContentLoading)(
1111                windows_core::Interface::as_raw(self),
1112                token,
1113            )
1114            .ok()
1115        }
1116    }
1117    pub unsafe fn add_SourceChanged<P0>(
1118        &self,
1119        eventhandler: P0,
1120        token: *mut i64,
1121    ) -> windows_core::Result<()>
1122    where
1123        P0: windows_core::Param<ICoreWebView2SourceChangedEventHandler>,
1124    {
1125        unsafe {
1126            (windows_core::Interface::vtable(self).add_SourceChanged)(
1127                windows_core::Interface::as_raw(self),
1128                eventhandler.param().abi(),
1129                token as _,
1130            )
1131            .ok()
1132        }
1133    }
1134    pub unsafe fn remove_SourceChanged(&self, token: i64) -> windows_core::Result<()> {
1135        unsafe {
1136            (windows_core::Interface::vtable(self).remove_SourceChanged)(
1137                windows_core::Interface::as_raw(self),
1138                token,
1139            )
1140            .ok()
1141        }
1142    }
1143    pub unsafe fn add_HistoryChanged<P0>(
1144        &self,
1145        eventhandler: P0,
1146        token: *mut i64,
1147    ) -> windows_core::Result<()>
1148    where
1149        P0: windows_core::Param<ICoreWebView2HistoryChangedEventHandler>,
1150    {
1151        unsafe {
1152            (windows_core::Interface::vtable(self).add_HistoryChanged)(
1153                windows_core::Interface::as_raw(self),
1154                eventhandler.param().abi(),
1155                token as _,
1156            )
1157            .ok()
1158        }
1159    }
1160    pub unsafe fn remove_HistoryChanged(&self, token: i64) -> windows_core::Result<()> {
1161        unsafe {
1162            (windows_core::Interface::vtable(self).remove_HistoryChanged)(
1163                windows_core::Interface::as_raw(self),
1164                token,
1165            )
1166            .ok()
1167        }
1168    }
1169    pub unsafe fn add_NavigationCompleted<P0>(
1170        &self,
1171        eventhandler: P0,
1172        token: *mut i64,
1173    ) -> windows_core::Result<()>
1174    where
1175        P0: windows_core::Param<ICoreWebView2NavigationCompletedEventHandler>,
1176    {
1177        unsafe {
1178            (windows_core::Interface::vtable(self).add_NavigationCompleted)(
1179                windows_core::Interface::as_raw(self),
1180                eventhandler.param().abi(),
1181                token as _,
1182            )
1183            .ok()
1184        }
1185    }
1186    pub unsafe fn remove_NavigationCompleted(&self, token: i64) -> windows_core::Result<()> {
1187        unsafe {
1188            (windows_core::Interface::vtable(self).remove_NavigationCompleted)(
1189                windows_core::Interface::as_raw(self),
1190                token,
1191            )
1192            .ok()
1193        }
1194    }
1195    pub unsafe fn add_FrameNavigationStarting<P0>(
1196        &self,
1197        eventhandler: P0,
1198        token: *mut i64,
1199    ) -> windows_core::Result<()>
1200    where
1201        P0: windows_core::Param<ICoreWebView2NavigationStartingEventHandler>,
1202    {
1203        unsafe {
1204            (windows_core::Interface::vtable(self).add_FrameNavigationStarting)(
1205                windows_core::Interface::as_raw(self),
1206                eventhandler.param().abi(),
1207                token as _,
1208            )
1209            .ok()
1210        }
1211    }
1212    pub unsafe fn remove_FrameNavigationStarting(&self, token: i64) -> windows_core::Result<()> {
1213        unsafe {
1214            (windows_core::Interface::vtable(self).remove_FrameNavigationStarting)(
1215                windows_core::Interface::as_raw(self),
1216                token,
1217            )
1218            .ok()
1219        }
1220    }
1221    pub unsafe fn add_FrameNavigationCompleted<P0>(
1222        &self,
1223        eventhandler: P0,
1224        token: *mut i64,
1225    ) -> windows_core::Result<()>
1226    where
1227        P0: windows_core::Param<ICoreWebView2NavigationCompletedEventHandler>,
1228    {
1229        unsafe {
1230            (windows_core::Interface::vtable(self).add_FrameNavigationCompleted)(
1231                windows_core::Interface::as_raw(self),
1232                eventhandler.param().abi(),
1233                token as _,
1234            )
1235            .ok()
1236        }
1237    }
1238    pub unsafe fn remove_FrameNavigationCompleted(&self, token: i64) -> windows_core::Result<()> {
1239        unsafe {
1240            (windows_core::Interface::vtable(self).remove_FrameNavigationCompleted)(
1241                windows_core::Interface::as_raw(self),
1242                token,
1243            )
1244            .ok()
1245        }
1246    }
1247    pub unsafe fn add_ScriptDialogOpening<P0>(
1248        &self,
1249        eventhandler: P0,
1250        token: *mut i64,
1251    ) -> windows_core::Result<()>
1252    where
1253        P0: windows_core::Param<ICoreWebView2ScriptDialogOpeningEventHandler>,
1254    {
1255        unsafe {
1256            (windows_core::Interface::vtable(self).add_ScriptDialogOpening)(
1257                windows_core::Interface::as_raw(self),
1258                eventhandler.param().abi(),
1259                token as _,
1260            )
1261            .ok()
1262        }
1263    }
1264    pub unsafe fn remove_ScriptDialogOpening(&self, token: i64) -> windows_core::Result<()> {
1265        unsafe {
1266            (windows_core::Interface::vtable(self).remove_ScriptDialogOpening)(
1267                windows_core::Interface::as_raw(self),
1268                token,
1269            )
1270            .ok()
1271        }
1272    }
1273    pub unsafe fn add_PermissionRequested<P0>(
1274        &self,
1275        eventhandler: P0,
1276        token: *mut i64,
1277    ) -> windows_core::Result<()>
1278    where
1279        P0: windows_core::Param<ICoreWebView2PermissionRequestedEventHandler>,
1280    {
1281        unsafe {
1282            (windows_core::Interface::vtable(self).add_PermissionRequested)(
1283                windows_core::Interface::as_raw(self),
1284                eventhandler.param().abi(),
1285                token as _,
1286            )
1287            .ok()
1288        }
1289    }
1290    pub unsafe fn remove_PermissionRequested(&self, token: i64) -> windows_core::Result<()> {
1291        unsafe {
1292            (windows_core::Interface::vtable(self).remove_PermissionRequested)(
1293                windows_core::Interface::as_raw(self),
1294                token,
1295            )
1296            .ok()
1297        }
1298    }
1299    pub unsafe fn add_ProcessFailed<P0>(
1300        &self,
1301        eventhandler: P0,
1302        token: *mut i64,
1303    ) -> windows_core::Result<()>
1304    where
1305        P0: windows_core::Param<ICoreWebView2ProcessFailedEventHandler>,
1306    {
1307        unsafe {
1308            (windows_core::Interface::vtable(self).add_ProcessFailed)(
1309                windows_core::Interface::as_raw(self),
1310                eventhandler.param().abi(),
1311                token as _,
1312            )
1313            .ok()
1314        }
1315    }
1316    pub unsafe fn remove_ProcessFailed(&self, token: i64) -> windows_core::Result<()> {
1317        unsafe {
1318            (windows_core::Interface::vtable(self).remove_ProcessFailed)(
1319                windows_core::Interface::as_raw(self),
1320                token,
1321            )
1322            .ok()
1323        }
1324    }
1325    pub unsafe fn AddScriptToExecuteOnDocumentCreated<P0, P1>(
1326        &self,
1327        javascript: P0,
1328        handler: P1,
1329    ) -> windows_core::Result<()>
1330    where
1331        P0: windows_core::Param<windows_core::PCWSTR>,
1332        P1: windows_core::Param<ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler>,
1333    {
1334        unsafe {
1335            (windows_core::Interface::vtable(self).AddScriptToExecuteOnDocumentCreated)(
1336                windows_core::Interface::as_raw(self),
1337                javascript.param().abi(),
1338                handler.param().abi(),
1339            )
1340            .ok()
1341        }
1342    }
1343    pub unsafe fn RemoveScriptToExecuteOnDocumentCreated<P0>(
1344        &self,
1345        id: P0,
1346    ) -> windows_core::Result<()>
1347    where
1348        P0: windows_core::Param<windows_core::PCWSTR>,
1349    {
1350        unsafe {
1351            (windows_core::Interface::vtable(self).RemoveScriptToExecuteOnDocumentCreated)(
1352                windows_core::Interface::as_raw(self),
1353                id.param().abi(),
1354            )
1355            .ok()
1356        }
1357    }
1358    pub unsafe fn ExecuteScript<P0, P1>(
1359        &self,
1360        javascript: P0,
1361        handler: P1,
1362    ) -> windows_core::Result<()>
1363    where
1364        P0: windows_core::Param<windows_core::PCWSTR>,
1365        P1: windows_core::Param<ICoreWebView2ExecuteScriptCompletedHandler>,
1366    {
1367        unsafe {
1368            (windows_core::Interface::vtable(self).ExecuteScript)(
1369                windows_core::Interface::as_raw(self),
1370                javascript.param().abi(),
1371                handler.param().abi(),
1372            )
1373            .ok()
1374        }
1375    }
1376    pub unsafe fn CapturePreview<P1, P2>(
1377        &self,
1378        imageformat: COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT,
1379        imagestream: P1,
1380        handler: P2,
1381    ) -> windows_core::Result<()>
1382    where
1383        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
1384        P2: windows_core::Param<ICoreWebView2CapturePreviewCompletedHandler>,
1385    {
1386        unsafe {
1387            (windows_core::Interface::vtable(self).CapturePreview)(
1388                windows_core::Interface::as_raw(self),
1389                imageformat,
1390                imagestream.param().abi(),
1391                handler.param().abi(),
1392            )
1393            .ok()
1394        }
1395    }
1396    pub unsafe fn Reload(&self) -> windows_core::Result<()> {
1397        unsafe {
1398            (windows_core::Interface::vtable(self).Reload)(windows_core::Interface::as_raw(self))
1399                .ok()
1400        }
1401    }
1402    pub unsafe fn PostWebMessageAsJson<P0>(&self, webmessageasjson: P0) -> windows_core::Result<()>
1403    where
1404        P0: windows_core::Param<windows_core::PCWSTR>,
1405    {
1406        unsafe {
1407            (windows_core::Interface::vtable(self).PostWebMessageAsJson)(
1408                windows_core::Interface::as_raw(self),
1409                webmessageasjson.param().abi(),
1410            )
1411            .ok()
1412        }
1413    }
1414    pub unsafe fn PostWebMessageAsString<P0>(
1415        &self,
1416        webmessageasstring: P0,
1417    ) -> windows_core::Result<()>
1418    where
1419        P0: windows_core::Param<windows_core::PCWSTR>,
1420    {
1421        unsafe {
1422            (windows_core::Interface::vtable(self).PostWebMessageAsString)(
1423                windows_core::Interface::as_raw(self),
1424                webmessageasstring.param().abi(),
1425            )
1426            .ok()
1427        }
1428    }
1429    pub unsafe fn add_WebMessageReceived<P0>(
1430        &self,
1431        handler: P0,
1432        token: *mut i64,
1433    ) -> windows_core::Result<()>
1434    where
1435        P0: windows_core::Param<ICoreWebView2WebMessageReceivedEventHandler>,
1436    {
1437        unsafe {
1438            (windows_core::Interface::vtable(self).add_WebMessageReceived)(
1439                windows_core::Interface::as_raw(self),
1440                handler.param().abi(),
1441                token as _,
1442            )
1443            .ok()
1444        }
1445    }
1446    pub unsafe fn remove_WebMessageReceived(&self, token: i64) -> windows_core::Result<()> {
1447        unsafe {
1448            (windows_core::Interface::vtable(self).remove_WebMessageReceived)(
1449                windows_core::Interface::as_raw(self),
1450                token,
1451            )
1452            .ok()
1453        }
1454    }
1455    pub unsafe fn CallDevToolsProtocolMethod<P0, P1, P2>(
1456        &self,
1457        methodname: P0,
1458        parametersasjson: P1,
1459        handler: P2,
1460    ) -> windows_core::Result<()>
1461    where
1462        P0: windows_core::Param<windows_core::PCWSTR>,
1463        P1: windows_core::Param<windows_core::PCWSTR>,
1464        P2: windows_core::Param<ICoreWebView2CallDevToolsProtocolMethodCompletedHandler>,
1465    {
1466        unsafe {
1467            (windows_core::Interface::vtable(self).CallDevToolsProtocolMethod)(
1468                windows_core::Interface::as_raw(self),
1469                methodname.param().abi(),
1470                parametersasjson.param().abi(),
1471                handler.param().abi(),
1472            )
1473            .ok()
1474        }
1475    }
1476    pub unsafe fn BrowserProcessId(&self, value: *mut u32) -> windows_core::Result<()> {
1477        unsafe {
1478            (windows_core::Interface::vtable(self).BrowserProcessId)(
1479                windows_core::Interface::as_raw(self),
1480                value as _,
1481            )
1482            .ok()
1483        }
1484    }
1485    pub unsafe fn CanGoBack(&self, cangoback: *mut windows_core::BOOL) -> windows_core::Result<()> {
1486        unsafe {
1487            (windows_core::Interface::vtable(self).CanGoBack)(
1488                windows_core::Interface::as_raw(self),
1489                cangoback as _,
1490            )
1491            .ok()
1492        }
1493    }
1494    pub unsafe fn CanGoForward(
1495        &self,
1496        cangoforward: *mut windows_core::BOOL,
1497    ) -> windows_core::Result<()> {
1498        unsafe {
1499            (windows_core::Interface::vtable(self).CanGoForward)(
1500                windows_core::Interface::as_raw(self),
1501                cangoforward as _,
1502            )
1503            .ok()
1504        }
1505    }
1506    pub unsafe fn GoBack(&self) -> windows_core::Result<()> {
1507        unsafe {
1508            (windows_core::Interface::vtable(self).GoBack)(windows_core::Interface::as_raw(self))
1509                .ok()
1510        }
1511    }
1512    pub unsafe fn GoForward(&self) -> windows_core::Result<()> {
1513        unsafe {
1514            (windows_core::Interface::vtable(self).GoForward)(windows_core::Interface::as_raw(self))
1515                .ok()
1516        }
1517    }
1518    pub unsafe fn GetDevToolsProtocolEventReceiver<P0>(
1519        &self,
1520        eventname: P0,
1521    ) -> windows_core::Result<ICoreWebView2DevToolsProtocolEventReceiver>
1522    where
1523        P0: windows_core::Param<windows_core::PCWSTR>,
1524    {
1525        unsafe {
1526            let mut result__ = core::mem::zeroed();
1527            (windows_core::Interface::vtable(self).GetDevToolsProtocolEventReceiver)(
1528                windows_core::Interface::as_raw(self),
1529                eventname.param().abi(),
1530                &mut result__,
1531            )
1532            .and_then(|| windows_core::Type::from_abi(result__))
1533        }
1534    }
1535    pub unsafe fn Stop(&self) -> windows_core::Result<()> {
1536        unsafe {
1537            (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self)).ok()
1538        }
1539    }
1540    pub unsafe fn add_NewWindowRequested<P0>(
1541        &self,
1542        eventhandler: P0,
1543        token: *mut i64,
1544    ) -> windows_core::Result<()>
1545    where
1546        P0: windows_core::Param<ICoreWebView2NewWindowRequestedEventHandler>,
1547    {
1548        unsafe {
1549            (windows_core::Interface::vtable(self).add_NewWindowRequested)(
1550                windows_core::Interface::as_raw(self),
1551                eventhandler.param().abi(),
1552                token as _,
1553            )
1554            .ok()
1555        }
1556    }
1557    pub unsafe fn remove_NewWindowRequested(&self, token: i64) -> windows_core::Result<()> {
1558        unsafe {
1559            (windows_core::Interface::vtable(self).remove_NewWindowRequested)(
1560                windows_core::Interface::as_raw(self),
1561                token,
1562            )
1563            .ok()
1564        }
1565    }
1566    pub unsafe fn add_DocumentTitleChanged<P0>(
1567        &self,
1568        eventhandler: P0,
1569        token: *mut i64,
1570    ) -> windows_core::Result<()>
1571    where
1572        P0: windows_core::Param<ICoreWebView2DocumentTitleChangedEventHandler>,
1573    {
1574        unsafe {
1575            (windows_core::Interface::vtable(self).add_DocumentTitleChanged)(
1576                windows_core::Interface::as_raw(self),
1577                eventhandler.param().abi(),
1578                token as _,
1579            )
1580            .ok()
1581        }
1582    }
1583    pub unsafe fn remove_DocumentTitleChanged(&self, token: i64) -> windows_core::Result<()> {
1584        unsafe {
1585            (windows_core::Interface::vtable(self).remove_DocumentTitleChanged)(
1586                windows_core::Interface::as_raw(self),
1587                token,
1588            )
1589            .ok()
1590        }
1591    }
1592    pub unsafe fn DocumentTitle(
1593        &self,
1594        title: *mut windows_core::PWSTR,
1595    ) -> windows_core::Result<()> {
1596        unsafe {
1597            (windows_core::Interface::vtable(self).DocumentTitle)(
1598                windows_core::Interface::as_raw(self),
1599                title as _,
1600            )
1601            .ok()
1602        }
1603    }
1604    pub unsafe fn AddHostObjectToScript<P0>(
1605        &self,
1606        name: P0,
1607        object: *mut windows::Win32::System::Variant::VARIANT,
1608    ) -> windows_core::Result<()>
1609    where
1610        P0: windows_core::Param<windows_core::PCWSTR>,
1611    {
1612        unsafe {
1613            (windows_core::Interface::vtable(self).AddHostObjectToScript)(
1614                windows_core::Interface::as_raw(self),
1615                name.param().abi(),
1616                core::mem::transmute(object),
1617            )
1618            .ok()
1619        }
1620    }
1621    pub unsafe fn RemoveHostObjectFromScript<P0>(&self, name: P0) -> windows_core::Result<()>
1622    where
1623        P0: windows_core::Param<windows_core::PCWSTR>,
1624    {
1625        unsafe {
1626            (windows_core::Interface::vtable(self).RemoveHostObjectFromScript)(
1627                windows_core::Interface::as_raw(self),
1628                name.param().abi(),
1629            )
1630            .ok()
1631        }
1632    }
1633    pub unsafe fn OpenDevToolsWindow(&self) -> windows_core::Result<()> {
1634        unsafe {
1635            (windows_core::Interface::vtable(self).OpenDevToolsWindow)(
1636                windows_core::Interface::as_raw(self),
1637            )
1638            .ok()
1639        }
1640    }
1641    pub unsafe fn add_ContainsFullScreenElementChanged<P0>(
1642        &self,
1643        eventhandler: P0,
1644        token: *mut i64,
1645    ) -> windows_core::Result<()>
1646    where
1647        P0: windows_core::Param<ICoreWebView2ContainsFullScreenElementChangedEventHandler>,
1648    {
1649        unsafe {
1650            (windows_core::Interface::vtable(self).add_ContainsFullScreenElementChanged)(
1651                windows_core::Interface::as_raw(self),
1652                eventhandler.param().abi(),
1653                token as _,
1654            )
1655            .ok()
1656        }
1657    }
1658    pub unsafe fn remove_ContainsFullScreenElementChanged(
1659        &self,
1660        token: i64,
1661    ) -> windows_core::Result<()> {
1662        unsafe {
1663            (windows_core::Interface::vtable(self).remove_ContainsFullScreenElementChanged)(
1664                windows_core::Interface::as_raw(self),
1665                token,
1666            )
1667            .ok()
1668        }
1669    }
1670    pub unsafe fn ContainsFullScreenElement(
1671        &self,
1672        containsfullscreenelement: *mut windows_core::BOOL,
1673    ) -> windows_core::Result<()> {
1674        unsafe {
1675            (windows_core::Interface::vtable(self).ContainsFullScreenElement)(
1676                windows_core::Interface::as_raw(self),
1677                containsfullscreenelement as _,
1678            )
1679            .ok()
1680        }
1681    }
1682    pub unsafe fn add_WebResourceRequested<P0>(
1683        &self,
1684        eventhandler: P0,
1685        token: *mut i64,
1686    ) -> windows_core::Result<()>
1687    where
1688        P0: windows_core::Param<ICoreWebView2WebResourceRequestedEventHandler>,
1689    {
1690        unsafe {
1691            (windows_core::Interface::vtable(self).add_WebResourceRequested)(
1692                windows_core::Interface::as_raw(self),
1693                eventhandler.param().abi(),
1694                token as _,
1695            )
1696            .ok()
1697        }
1698    }
1699    pub unsafe fn remove_WebResourceRequested(&self, token: i64) -> windows_core::Result<()> {
1700        unsafe {
1701            (windows_core::Interface::vtable(self).remove_WebResourceRequested)(
1702                windows_core::Interface::as_raw(self),
1703                token,
1704            )
1705            .ok()
1706        }
1707    }
1708    pub unsafe fn AddWebResourceRequestedFilter<P0>(
1709        &self,
1710        uri: P0,
1711        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
1712    ) -> windows_core::Result<()>
1713    where
1714        P0: windows_core::Param<windows_core::PCWSTR>,
1715    {
1716        unsafe {
1717            (windows_core::Interface::vtable(self).AddWebResourceRequestedFilter)(
1718                windows_core::Interface::as_raw(self),
1719                uri.param().abi(),
1720                resourcecontext,
1721            )
1722            .ok()
1723        }
1724    }
1725    pub unsafe fn RemoveWebResourceRequestedFilter<P0>(
1726        &self,
1727        uri: P0,
1728        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
1729    ) -> windows_core::Result<()>
1730    where
1731        P0: windows_core::Param<windows_core::PCWSTR>,
1732    {
1733        unsafe {
1734            (windows_core::Interface::vtable(self).RemoveWebResourceRequestedFilter)(
1735                windows_core::Interface::as_raw(self),
1736                uri.param().abi(),
1737                resourcecontext,
1738            )
1739            .ok()
1740        }
1741    }
1742    pub unsafe fn add_WindowCloseRequested<P0>(
1743        &self,
1744        eventhandler: P0,
1745        token: *mut i64,
1746    ) -> windows_core::Result<()>
1747    where
1748        P0: windows_core::Param<ICoreWebView2WindowCloseRequestedEventHandler>,
1749    {
1750        unsafe {
1751            (windows_core::Interface::vtable(self).add_WindowCloseRequested)(
1752                windows_core::Interface::as_raw(self),
1753                eventhandler.param().abi(),
1754                token as _,
1755            )
1756            .ok()
1757        }
1758    }
1759    pub unsafe fn remove_WindowCloseRequested(&self, token: i64) -> windows_core::Result<()> {
1760        unsafe {
1761            (windows_core::Interface::vtable(self).remove_WindowCloseRequested)(
1762                windows_core::Interface::as_raw(self),
1763                token,
1764            )
1765            .ok()
1766        }
1767    }
1768}
1769#[repr(C)]
1770#[doc(hidden)]
1771pub struct ICoreWebView2_Vtbl {
1772    pub base__: windows_core::IUnknown_Vtbl,
1773    pub Settings: unsafe extern "system" fn(
1774        *mut core::ffi::c_void,
1775        *mut *mut core::ffi::c_void,
1776    ) -> windows_core::HRESULT,
1777    pub Source: unsafe extern "system" fn(
1778        *mut core::ffi::c_void,
1779        *mut windows_core::PWSTR,
1780    ) -> windows_core::HRESULT,
1781    pub Navigate: unsafe extern "system" fn(
1782        *mut core::ffi::c_void,
1783        windows_core::PCWSTR,
1784    ) -> windows_core::HRESULT,
1785    pub NavigateToString: unsafe extern "system" fn(
1786        *mut core::ffi::c_void,
1787        windows_core::PCWSTR,
1788    ) -> windows_core::HRESULT,
1789    pub add_NavigationStarting: unsafe extern "system" fn(
1790        *mut core::ffi::c_void,
1791        *mut core::ffi::c_void,
1792        *mut i64,
1793    ) -> windows_core::HRESULT,
1794    pub remove_NavigationStarting:
1795        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1796    pub add_ContentLoading: unsafe extern "system" fn(
1797        *mut core::ffi::c_void,
1798        *mut core::ffi::c_void,
1799        *mut i64,
1800    ) -> windows_core::HRESULT,
1801    pub remove_ContentLoading:
1802        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1803    pub add_SourceChanged: unsafe extern "system" fn(
1804        *mut core::ffi::c_void,
1805        *mut core::ffi::c_void,
1806        *mut i64,
1807    ) -> windows_core::HRESULT,
1808    pub remove_SourceChanged:
1809        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1810    pub add_HistoryChanged: unsafe extern "system" fn(
1811        *mut core::ffi::c_void,
1812        *mut core::ffi::c_void,
1813        *mut i64,
1814    ) -> windows_core::HRESULT,
1815    pub remove_HistoryChanged:
1816        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1817    pub add_NavigationCompleted: unsafe extern "system" fn(
1818        *mut core::ffi::c_void,
1819        *mut core::ffi::c_void,
1820        *mut i64,
1821    ) -> windows_core::HRESULT,
1822    pub remove_NavigationCompleted:
1823        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1824    pub add_FrameNavigationStarting: unsafe extern "system" fn(
1825        *mut core::ffi::c_void,
1826        *mut core::ffi::c_void,
1827        *mut i64,
1828    ) -> windows_core::HRESULT,
1829    pub remove_FrameNavigationStarting:
1830        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1831    pub add_FrameNavigationCompleted: unsafe extern "system" fn(
1832        *mut core::ffi::c_void,
1833        *mut core::ffi::c_void,
1834        *mut i64,
1835    ) -> windows_core::HRESULT,
1836    pub remove_FrameNavigationCompleted:
1837        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1838    pub add_ScriptDialogOpening: unsafe extern "system" fn(
1839        *mut core::ffi::c_void,
1840        *mut core::ffi::c_void,
1841        *mut i64,
1842    ) -> windows_core::HRESULT,
1843    pub remove_ScriptDialogOpening:
1844        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1845    pub add_PermissionRequested: unsafe extern "system" fn(
1846        *mut core::ffi::c_void,
1847        *mut core::ffi::c_void,
1848        *mut i64,
1849    ) -> windows_core::HRESULT,
1850    pub remove_PermissionRequested:
1851        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1852    pub add_ProcessFailed: unsafe extern "system" fn(
1853        *mut core::ffi::c_void,
1854        *mut core::ffi::c_void,
1855        *mut i64,
1856    ) -> windows_core::HRESULT,
1857    pub remove_ProcessFailed:
1858        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1859    pub AddScriptToExecuteOnDocumentCreated: unsafe extern "system" fn(
1860        *mut core::ffi::c_void,
1861        windows_core::PCWSTR,
1862        *mut core::ffi::c_void,
1863    )
1864        -> windows_core::HRESULT,
1865    pub RemoveScriptToExecuteOnDocumentCreated: unsafe extern "system" fn(
1866        *mut core::ffi::c_void,
1867        windows_core::PCWSTR,
1868    )
1869        -> windows_core::HRESULT,
1870    pub ExecuteScript: unsafe extern "system" fn(
1871        *mut core::ffi::c_void,
1872        windows_core::PCWSTR,
1873        *mut core::ffi::c_void,
1874    ) -> windows_core::HRESULT,
1875    pub CapturePreview: unsafe extern "system" fn(
1876        *mut core::ffi::c_void,
1877        COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT,
1878        *mut core::ffi::c_void,
1879        *mut core::ffi::c_void,
1880    ) -> windows_core::HRESULT,
1881    pub Reload: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
1882    pub PostWebMessageAsJson: unsafe extern "system" fn(
1883        *mut core::ffi::c_void,
1884        windows_core::PCWSTR,
1885    ) -> windows_core::HRESULT,
1886    pub PostWebMessageAsString: unsafe extern "system" fn(
1887        *mut core::ffi::c_void,
1888        windows_core::PCWSTR,
1889    ) -> windows_core::HRESULT,
1890    pub add_WebMessageReceived: unsafe extern "system" fn(
1891        *mut core::ffi::c_void,
1892        *mut core::ffi::c_void,
1893        *mut i64,
1894    ) -> windows_core::HRESULT,
1895    pub remove_WebMessageReceived:
1896        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1897    pub CallDevToolsProtocolMethod: unsafe extern "system" fn(
1898        *mut core::ffi::c_void,
1899        windows_core::PCWSTR,
1900        windows_core::PCWSTR,
1901        *mut core::ffi::c_void,
1902    ) -> windows_core::HRESULT,
1903    pub BrowserProcessId:
1904        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
1905    pub CanGoBack: unsafe extern "system" fn(
1906        *mut core::ffi::c_void,
1907        *mut windows_core::BOOL,
1908    ) -> windows_core::HRESULT,
1909    pub CanGoForward: unsafe extern "system" fn(
1910        *mut core::ffi::c_void,
1911        *mut windows_core::BOOL,
1912    ) -> windows_core::HRESULT,
1913    pub GoBack: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
1914    pub GoForward: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
1915    pub GetDevToolsProtocolEventReceiver: unsafe extern "system" fn(
1916        *mut core::ffi::c_void,
1917        windows_core::PCWSTR,
1918        *mut *mut core::ffi::c_void,
1919    ) -> windows_core::HRESULT,
1920    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
1921    pub add_NewWindowRequested: unsafe extern "system" fn(
1922        *mut core::ffi::c_void,
1923        *mut core::ffi::c_void,
1924        *mut i64,
1925    ) -> windows_core::HRESULT,
1926    pub remove_NewWindowRequested:
1927        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1928    pub add_DocumentTitleChanged: unsafe extern "system" fn(
1929        *mut core::ffi::c_void,
1930        *mut core::ffi::c_void,
1931        *mut i64,
1932    ) -> windows_core::HRESULT,
1933    pub remove_DocumentTitleChanged:
1934        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1935    pub DocumentTitle: unsafe extern "system" fn(
1936        *mut core::ffi::c_void,
1937        *mut windows_core::PWSTR,
1938    ) -> windows_core::HRESULT,
1939    pub AddHostObjectToScript: unsafe extern "system" fn(
1940        *mut core::ffi::c_void,
1941        windows_core::PCWSTR,
1942        *mut windows::Win32::System::Variant::VARIANT,
1943    ) -> windows_core::HRESULT,
1944    pub RemoveHostObjectFromScript: unsafe extern "system" fn(
1945        *mut core::ffi::c_void,
1946        windows_core::PCWSTR,
1947    ) -> windows_core::HRESULT,
1948    pub OpenDevToolsWindow:
1949        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
1950    pub add_ContainsFullScreenElementChanged: unsafe extern "system" fn(
1951        *mut core::ffi::c_void,
1952        *mut core::ffi::c_void,
1953        *mut i64,
1954    )
1955        -> windows_core::HRESULT,
1956    pub remove_ContainsFullScreenElementChanged:
1957        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1958    pub ContainsFullScreenElement: unsafe extern "system" fn(
1959        *mut core::ffi::c_void,
1960        *mut windows_core::BOOL,
1961    ) -> windows_core::HRESULT,
1962    pub add_WebResourceRequested: unsafe extern "system" fn(
1963        *mut core::ffi::c_void,
1964        *mut core::ffi::c_void,
1965        *mut i64,
1966    ) -> windows_core::HRESULT,
1967    pub remove_WebResourceRequested:
1968        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1969    pub AddWebResourceRequestedFilter: unsafe extern "system" fn(
1970        *mut core::ffi::c_void,
1971        windows_core::PCWSTR,
1972        COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
1973    ) -> windows_core::HRESULT,
1974    pub RemoveWebResourceRequestedFilter: unsafe extern "system" fn(
1975        *mut core::ffi::c_void,
1976        windows_core::PCWSTR,
1977        COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
1978    ) -> windows_core::HRESULT,
1979    pub add_WindowCloseRequested: unsafe extern "system" fn(
1980        *mut core::ffi::c_void,
1981        *mut core::ffi::c_void,
1982        *mut i64,
1983    ) -> windows_core::HRESULT,
1984    pub remove_WindowCloseRequested:
1985        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
1986}
1987pub trait ICoreWebView2_Impl: windows_core::IUnknownImpl {
1988    fn Settings(&self) -> windows_core::Result<ICoreWebView2Settings>;
1989    fn Source(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
1990    fn Navigate(&self, uri: &windows_core::PCWSTR) -> windows_core::Result<()>;
1991    fn NavigateToString(&self, htmlcontent: &windows_core::PCWSTR) -> windows_core::Result<()>;
1992    fn add_NavigationStarting(
1993        &self,
1994        eventhandler: windows_core::Ref<'_, ICoreWebView2NavigationStartingEventHandler>,
1995        token: *mut i64,
1996    ) -> windows_core::Result<()>;
1997    fn remove_NavigationStarting(&self, token: i64) -> windows_core::Result<()>;
1998    fn add_ContentLoading(
1999        &self,
2000        eventhandler: windows_core::Ref<'_, ICoreWebView2ContentLoadingEventHandler>,
2001        token: *mut i64,
2002    ) -> windows_core::Result<()>;
2003    fn remove_ContentLoading(&self, token: i64) -> windows_core::Result<()>;
2004    fn add_SourceChanged(
2005        &self,
2006        eventhandler: windows_core::Ref<'_, ICoreWebView2SourceChangedEventHandler>,
2007        token: *mut i64,
2008    ) -> windows_core::Result<()>;
2009    fn remove_SourceChanged(&self, token: i64) -> windows_core::Result<()>;
2010    fn add_HistoryChanged(
2011        &self,
2012        eventhandler: windows_core::Ref<'_, ICoreWebView2HistoryChangedEventHandler>,
2013        token: *mut i64,
2014    ) -> windows_core::Result<()>;
2015    fn remove_HistoryChanged(&self, token: i64) -> windows_core::Result<()>;
2016    fn add_NavigationCompleted(
2017        &self,
2018        eventhandler: windows_core::Ref<'_, ICoreWebView2NavigationCompletedEventHandler>,
2019        token: *mut i64,
2020    ) -> windows_core::Result<()>;
2021    fn remove_NavigationCompleted(&self, token: i64) -> windows_core::Result<()>;
2022    fn add_FrameNavigationStarting(
2023        &self,
2024        eventhandler: windows_core::Ref<'_, ICoreWebView2NavigationStartingEventHandler>,
2025        token: *mut i64,
2026    ) -> windows_core::Result<()>;
2027    fn remove_FrameNavigationStarting(&self, token: i64) -> windows_core::Result<()>;
2028    fn add_FrameNavigationCompleted(
2029        &self,
2030        eventhandler: windows_core::Ref<'_, ICoreWebView2NavigationCompletedEventHandler>,
2031        token: *mut i64,
2032    ) -> windows_core::Result<()>;
2033    fn remove_FrameNavigationCompleted(&self, token: i64) -> windows_core::Result<()>;
2034    fn add_ScriptDialogOpening(
2035        &self,
2036        eventhandler: windows_core::Ref<'_, ICoreWebView2ScriptDialogOpeningEventHandler>,
2037        token: *mut i64,
2038    ) -> windows_core::Result<()>;
2039    fn remove_ScriptDialogOpening(&self, token: i64) -> windows_core::Result<()>;
2040    fn add_PermissionRequested(
2041        &self,
2042        eventhandler: windows_core::Ref<'_, ICoreWebView2PermissionRequestedEventHandler>,
2043        token: *mut i64,
2044    ) -> windows_core::Result<()>;
2045    fn remove_PermissionRequested(&self, token: i64) -> windows_core::Result<()>;
2046    fn add_ProcessFailed(
2047        &self,
2048        eventhandler: windows_core::Ref<'_, ICoreWebView2ProcessFailedEventHandler>,
2049        token: *mut i64,
2050    ) -> windows_core::Result<()>;
2051    fn remove_ProcessFailed(&self, token: i64) -> windows_core::Result<()>;
2052    fn AddScriptToExecuteOnDocumentCreated(
2053        &self,
2054        javascript: &windows_core::PCWSTR,
2055        handler: windows_core::Ref<
2056            '_,
2057            ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler,
2058        >,
2059    ) -> windows_core::Result<()>;
2060    fn RemoveScriptToExecuteOnDocumentCreated(
2061        &self,
2062        id: &windows_core::PCWSTR,
2063    ) -> windows_core::Result<()>;
2064    fn ExecuteScript(
2065        &self,
2066        javascript: &windows_core::PCWSTR,
2067        handler: windows_core::Ref<'_, ICoreWebView2ExecuteScriptCompletedHandler>,
2068    ) -> windows_core::Result<()>;
2069    fn CapturePreview(
2070        &self,
2071        imageformat: COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT,
2072        imagestream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
2073        handler: windows_core::Ref<'_, ICoreWebView2CapturePreviewCompletedHandler>,
2074    ) -> windows_core::Result<()>;
2075    fn Reload(&self) -> windows_core::Result<()>;
2076    fn PostWebMessageAsJson(
2077        &self,
2078        webmessageasjson: &windows_core::PCWSTR,
2079    ) -> windows_core::Result<()>;
2080    fn PostWebMessageAsString(
2081        &self,
2082        webmessageasstring: &windows_core::PCWSTR,
2083    ) -> windows_core::Result<()>;
2084    fn add_WebMessageReceived(
2085        &self,
2086        handler: windows_core::Ref<'_, ICoreWebView2WebMessageReceivedEventHandler>,
2087        token: *mut i64,
2088    ) -> windows_core::Result<()>;
2089    fn remove_WebMessageReceived(&self, token: i64) -> windows_core::Result<()>;
2090    fn CallDevToolsProtocolMethod(
2091        &self,
2092        methodname: &windows_core::PCWSTR,
2093        parametersasjson: &windows_core::PCWSTR,
2094        handler: windows_core::Ref<'_, ICoreWebView2CallDevToolsProtocolMethodCompletedHandler>,
2095    ) -> windows_core::Result<()>;
2096    fn BrowserProcessId(&self, value: *mut u32) -> windows_core::Result<()>;
2097    fn CanGoBack(&self, cangoback: *mut windows_core::BOOL) -> windows_core::Result<()>;
2098    fn CanGoForward(&self, cangoforward: *mut windows_core::BOOL) -> windows_core::Result<()>;
2099    fn GoBack(&self) -> windows_core::Result<()>;
2100    fn GoForward(&self) -> windows_core::Result<()>;
2101    fn GetDevToolsProtocolEventReceiver(
2102        &self,
2103        eventname: &windows_core::PCWSTR,
2104    ) -> windows_core::Result<ICoreWebView2DevToolsProtocolEventReceiver>;
2105    fn Stop(&self) -> windows_core::Result<()>;
2106    fn add_NewWindowRequested(
2107        &self,
2108        eventhandler: windows_core::Ref<'_, ICoreWebView2NewWindowRequestedEventHandler>,
2109        token: *mut i64,
2110    ) -> windows_core::Result<()>;
2111    fn remove_NewWindowRequested(&self, token: i64) -> windows_core::Result<()>;
2112    fn add_DocumentTitleChanged(
2113        &self,
2114        eventhandler: windows_core::Ref<'_, ICoreWebView2DocumentTitleChangedEventHandler>,
2115        token: *mut i64,
2116    ) -> windows_core::Result<()>;
2117    fn remove_DocumentTitleChanged(&self, token: i64) -> windows_core::Result<()>;
2118    fn DocumentTitle(&self, title: *mut windows_core::PWSTR) -> windows_core::Result<()>;
2119    fn AddHostObjectToScript(
2120        &self,
2121        name: &windows_core::PCWSTR,
2122        object: *mut windows::Win32::System::Variant::VARIANT,
2123    ) -> windows_core::Result<()>;
2124    fn RemoveHostObjectFromScript(&self, name: &windows_core::PCWSTR) -> windows_core::Result<()>;
2125    fn OpenDevToolsWindow(&self) -> windows_core::Result<()>;
2126    fn add_ContainsFullScreenElementChanged(
2127        &self,
2128        eventhandler: windows_core::Ref<
2129            '_,
2130            ICoreWebView2ContainsFullScreenElementChangedEventHandler,
2131        >,
2132        token: *mut i64,
2133    ) -> windows_core::Result<()>;
2134    fn remove_ContainsFullScreenElementChanged(&self, token: i64) -> windows_core::Result<()>;
2135    fn ContainsFullScreenElement(
2136        &self,
2137        containsfullscreenelement: *mut windows_core::BOOL,
2138    ) -> windows_core::Result<()>;
2139    fn add_WebResourceRequested(
2140        &self,
2141        eventhandler: windows_core::Ref<'_, ICoreWebView2WebResourceRequestedEventHandler>,
2142        token: *mut i64,
2143    ) -> windows_core::Result<()>;
2144    fn remove_WebResourceRequested(&self, token: i64) -> windows_core::Result<()>;
2145    fn AddWebResourceRequestedFilter(
2146        &self,
2147        uri: &windows_core::PCWSTR,
2148        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
2149    ) -> windows_core::Result<()>;
2150    fn RemoveWebResourceRequestedFilter(
2151        &self,
2152        uri: &windows_core::PCWSTR,
2153        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
2154    ) -> windows_core::Result<()>;
2155    fn add_WindowCloseRequested(
2156        &self,
2157        eventhandler: windows_core::Ref<'_, ICoreWebView2WindowCloseRequestedEventHandler>,
2158        token: *mut i64,
2159    ) -> windows_core::Result<()>;
2160    fn remove_WindowCloseRequested(&self, token: i64) -> windows_core::Result<()>;
2161}
2162impl ICoreWebView2_Vtbl {
2163    pub const fn new<Identity: ICoreWebView2_Impl, const OFFSET: isize>() -> Self {
2164        unsafe extern "system" fn Settings<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2165            this: *mut core::ffi::c_void,
2166            settings: *mut *mut core::ffi::c_void,
2167        ) -> windows_core::HRESULT {
2168            unsafe {
2169                let this: &Identity =
2170                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2171                match ICoreWebView2_Impl::Settings(this) {
2172                    Ok(ok__) => {
2173                        settings.write(core::mem::transmute(ok__));
2174                        windows_core::HRESULT(0)
2175                    }
2176                    Err(err) => err.into(),
2177                }
2178            }
2179        }
2180        unsafe extern "system" fn Source<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2181            this: *mut core::ffi::c_void,
2182            uri: *mut windows_core::PWSTR,
2183        ) -> windows_core::HRESULT {
2184            unsafe {
2185                let this: &Identity =
2186                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2187                ICoreWebView2_Impl::Source(this, core::mem::transmute_copy(&uri)).into()
2188            }
2189        }
2190        unsafe extern "system" fn Navigate<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2191            this: *mut core::ffi::c_void,
2192            uri: windows_core::PCWSTR,
2193        ) -> windows_core::HRESULT {
2194            unsafe {
2195                let this: &Identity =
2196                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2197                ICoreWebView2_Impl::Navigate(this, core::mem::transmute(&uri)).into()
2198            }
2199        }
2200        unsafe extern "system" fn NavigateToString<
2201            Identity: ICoreWebView2_Impl,
2202            const OFFSET: isize,
2203        >(
2204            this: *mut core::ffi::c_void,
2205            htmlcontent: windows_core::PCWSTR,
2206        ) -> windows_core::HRESULT {
2207            unsafe {
2208                let this: &Identity =
2209                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2210                ICoreWebView2_Impl::NavigateToString(this, core::mem::transmute(&htmlcontent))
2211                    .into()
2212            }
2213        }
2214        unsafe extern "system" fn add_NavigationStarting<
2215            Identity: ICoreWebView2_Impl,
2216            const OFFSET: isize,
2217        >(
2218            this: *mut core::ffi::c_void,
2219            eventhandler: *mut core::ffi::c_void,
2220            token: *mut i64,
2221        ) -> windows_core::HRESULT {
2222            unsafe {
2223                let this: &Identity =
2224                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2225                ICoreWebView2_Impl::add_NavigationStarting(
2226                    this,
2227                    core::mem::transmute_copy(&eventhandler),
2228                    core::mem::transmute_copy(&token),
2229                )
2230                .into()
2231            }
2232        }
2233        unsafe extern "system" fn remove_NavigationStarting<
2234            Identity: ICoreWebView2_Impl,
2235            const OFFSET: isize,
2236        >(
2237            this: *mut core::ffi::c_void,
2238            token: i64,
2239        ) -> windows_core::HRESULT {
2240            unsafe {
2241                let this: &Identity =
2242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2243                ICoreWebView2_Impl::remove_NavigationStarting(
2244                    this,
2245                    core::mem::transmute_copy(&token),
2246                )
2247                .into()
2248            }
2249        }
2250        unsafe extern "system" fn add_ContentLoading<
2251            Identity: ICoreWebView2_Impl,
2252            const OFFSET: isize,
2253        >(
2254            this: *mut core::ffi::c_void,
2255            eventhandler: *mut core::ffi::c_void,
2256            token: *mut i64,
2257        ) -> windows_core::HRESULT {
2258            unsafe {
2259                let this: &Identity =
2260                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2261                ICoreWebView2_Impl::add_ContentLoading(
2262                    this,
2263                    core::mem::transmute_copy(&eventhandler),
2264                    core::mem::transmute_copy(&token),
2265                )
2266                .into()
2267            }
2268        }
2269        unsafe extern "system" fn remove_ContentLoading<
2270            Identity: ICoreWebView2_Impl,
2271            const OFFSET: isize,
2272        >(
2273            this: *mut core::ffi::c_void,
2274            token: i64,
2275        ) -> windows_core::HRESULT {
2276            unsafe {
2277                let this: &Identity =
2278                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2279                ICoreWebView2_Impl::remove_ContentLoading(this, core::mem::transmute_copy(&token))
2280                    .into()
2281            }
2282        }
2283        unsafe extern "system" fn add_SourceChanged<
2284            Identity: ICoreWebView2_Impl,
2285            const OFFSET: isize,
2286        >(
2287            this: *mut core::ffi::c_void,
2288            eventhandler: *mut core::ffi::c_void,
2289            token: *mut i64,
2290        ) -> windows_core::HRESULT {
2291            unsafe {
2292                let this: &Identity =
2293                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2294                ICoreWebView2_Impl::add_SourceChanged(
2295                    this,
2296                    core::mem::transmute_copy(&eventhandler),
2297                    core::mem::transmute_copy(&token),
2298                )
2299                .into()
2300            }
2301        }
2302        unsafe extern "system" fn remove_SourceChanged<
2303            Identity: ICoreWebView2_Impl,
2304            const OFFSET: isize,
2305        >(
2306            this: *mut core::ffi::c_void,
2307            token: i64,
2308        ) -> windows_core::HRESULT {
2309            unsafe {
2310                let this: &Identity =
2311                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2312                ICoreWebView2_Impl::remove_SourceChanged(this, core::mem::transmute_copy(&token))
2313                    .into()
2314            }
2315        }
2316        unsafe extern "system" fn add_HistoryChanged<
2317            Identity: ICoreWebView2_Impl,
2318            const OFFSET: isize,
2319        >(
2320            this: *mut core::ffi::c_void,
2321            eventhandler: *mut core::ffi::c_void,
2322            token: *mut i64,
2323        ) -> windows_core::HRESULT {
2324            unsafe {
2325                let this: &Identity =
2326                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2327                ICoreWebView2_Impl::add_HistoryChanged(
2328                    this,
2329                    core::mem::transmute_copy(&eventhandler),
2330                    core::mem::transmute_copy(&token),
2331                )
2332                .into()
2333            }
2334        }
2335        unsafe extern "system" fn remove_HistoryChanged<
2336            Identity: ICoreWebView2_Impl,
2337            const OFFSET: isize,
2338        >(
2339            this: *mut core::ffi::c_void,
2340            token: i64,
2341        ) -> windows_core::HRESULT {
2342            unsafe {
2343                let this: &Identity =
2344                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2345                ICoreWebView2_Impl::remove_HistoryChanged(this, core::mem::transmute_copy(&token))
2346                    .into()
2347            }
2348        }
2349        unsafe extern "system" fn add_NavigationCompleted<
2350            Identity: ICoreWebView2_Impl,
2351            const OFFSET: isize,
2352        >(
2353            this: *mut core::ffi::c_void,
2354            eventhandler: *mut core::ffi::c_void,
2355            token: *mut i64,
2356        ) -> windows_core::HRESULT {
2357            unsafe {
2358                let this: &Identity =
2359                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2360                ICoreWebView2_Impl::add_NavigationCompleted(
2361                    this,
2362                    core::mem::transmute_copy(&eventhandler),
2363                    core::mem::transmute_copy(&token),
2364                )
2365                .into()
2366            }
2367        }
2368        unsafe extern "system" fn remove_NavigationCompleted<
2369            Identity: ICoreWebView2_Impl,
2370            const OFFSET: isize,
2371        >(
2372            this: *mut core::ffi::c_void,
2373            token: i64,
2374        ) -> windows_core::HRESULT {
2375            unsafe {
2376                let this: &Identity =
2377                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2378                ICoreWebView2_Impl::remove_NavigationCompleted(
2379                    this,
2380                    core::mem::transmute_copy(&token),
2381                )
2382                .into()
2383            }
2384        }
2385        unsafe extern "system" fn add_FrameNavigationStarting<
2386            Identity: ICoreWebView2_Impl,
2387            const OFFSET: isize,
2388        >(
2389            this: *mut core::ffi::c_void,
2390            eventhandler: *mut core::ffi::c_void,
2391            token: *mut i64,
2392        ) -> windows_core::HRESULT {
2393            unsafe {
2394                let this: &Identity =
2395                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2396                ICoreWebView2_Impl::add_FrameNavigationStarting(
2397                    this,
2398                    core::mem::transmute_copy(&eventhandler),
2399                    core::mem::transmute_copy(&token),
2400                )
2401                .into()
2402            }
2403        }
2404        unsafe extern "system" fn remove_FrameNavigationStarting<
2405            Identity: ICoreWebView2_Impl,
2406            const OFFSET: isize,
2407        >(
2408            this: *mut core::ffi::c_void,
2409            token: i64,
2410        ) -> windows_core::HRESULT {
2411            unsafe {
2412                let this: &Identity =
2413                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2414                ICoreWebView2_Impl::remove_FrameNavigationStarting(
2415                    this,
2416                    core::mem::transmute_copy(&token),
2417                )
2418                .into()
2419            }
2420        }
2421        unsafe extern "system" fn add_FrameNavigationCompleted<
2422            Identity: ICoreWebView2_Impl,
2423            const OFFSET: isize,
2424        >(
2425            this: *mut core::ffi::c_void,
2426            eventhandler: *mut core::ffi::c_void,
2427            token: *mut i64,
2428        ) -> windows_core::HRESULT {
2429            unsafe {
2430                let this: &Identity =
2431                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2432                ICoreWebView2_Impl::add_FrameNavigationCompleted(
2433                    this,
2434                    core::mem::transmute_copy(&eventhandler),
2435                    core::mem::transmute_copy(&token),
2436                )
2437                .into()
2438            }
2439        }
2440        unsafe extern "system" fn remove_FrameNavigationCompleted<
2441            Identity: ICoreWebView2_Impl,
2442            const OFFSET: isize,
2443        >(
2444            this: *mut core::ffi::c_void,
2445            token: i64,
2446        ) -> windows_core::HRESULT {
2447            unsafe {
2448                let this: &Identity =
2449                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2450                ICoreWebView2_Impl::remove_FrameNavigationCompleted(
2451                    this,
2452                    core::mem::transmute_copy(&token),
2453                )
2454                .into()
2455            }
2456        }
2457        unsafe extern "system" fn add_ScriptDialogOpening<
2458            Identity: ICoreWebView2_Impl,
2459            const OFFSET: isize,
2460        >(
2461            this: *mut core::ffi::c_void,
2462            eventhandler: *mut core::ffi::c_void,
2463            token: *mut i64,
2464        ) -> windows_core::HRESULT {
2465            unsafe {
2466                let this: &Identity =
2467                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2468                ICoreWebView2_Impl::add_ScriptDialogOpening(
2469                    this,
2470                    core::mem::transmute_copy(&eventhandler),
2471                    core::mem::transmute_copy(&token),
2472                )
2473                .into()
2474            }
2475        }
2476        unsafe extern "system" fn remove_ScriptDialogOpening<
2477            Identity: ICoreWebView2_Impl,
2478            const OFFSET: isize,
2479        >(
2480            this: *mut core::ffi::c_void,
2481            token: i64,
2482        ) -> windows_core::HRESULT {
2483            unsafe {
2484                let this: &Identity =
2485                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2486                ICoreWebView2_Impl::remove_ScriptDialogOpening(
2487                    this,
2488                    core::mem::transmute_copy(&token),
2489                )
2490                .into()
2491            }
2492        }
2493        unsafe extern "system" fn add_PermissionRequested<
2494            Identity: ICoreWebView2_Impl,
2495            const OFFSET: isize,
2496        >(
2497            this: *mut core::ffi::c_void,
2498            eventhandler: *mut core::ffi::c_void,
2499            token: *mut i64,
2500        ) -> windows_core::HRESULT {
2501            unsafe {
2502                let this: &Identity =
2503                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2504                ICoreWebView2_Impl::add_PermissionRequested(
2505                    this,
2506                    core::mem::transmute_copy(&eventhandler),
2507                    core::mem::transmute_copy(&token),
2508                )
2509                .into()
2510            }
2511        }
2512        unsafe extern "system" fn remove_PermissionRequested<
2513            Identity: ICoreWebView2_Impl,
2514            const OFFSET: isize,
2515        >(
2516            this: *mut core::ffi::c_void,
2517            token: i64,
2518        ) -> windows_core::HRESULT {
2519            unsafe {
2520                let this: &Identity =
2521                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2522                ICoreWebView2_Impl::remove_PermissionRequested(
2523                    this,
2524                    core::mem::transmute_copy(&token),
2525                )
2526                .into()
2527            }
2528        }
2529        unsafe extern "system" fn add_ProcessFailed<
2530            Identity: ICoreWebView2_Impl,
2531            const OFFSET: isize,
2532        >(
2533            this: *mut core::ffi::c_void,
2534            eventhandler: *mut core::ffi::c_void,
2535            token: *mut i64,
2536        ) -> windows_core::HRESULT {
2537            unsafe {
2538                let this: &Identity =
2539                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2540                ICoreWebView2_Impl::add_ProcessFailed(
2541                    this,
2542                    core::mem::transmute_copy(&eventhandler),
2543                    core::mem::transmute_copy(&token),
2544                )
2545                .into()
2546            }
2547        }
2548        unsafe extern "system" fn remove_ProcessFailed<
2549            Identity: ICoreWebView2_Impl,
2550            const OFFSET: isize,
2551        >(
2552            this: *mut core::ffi::c_void,
2553            token: i64,
2554        ) -> windows_core::HRESULT {
2555            unsafe {
2556                let this: &Identity =
2557                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2558                ICoreWebView2_Impl::remove_ProcessFailed(this, core::mem::transmute_copy(&token))
2559                    .into()
2560            }
2561        }
2562        unsafe extern "system" fn AddScriptToExecuteOnDocumentCreated<
2563            Identity: ICoreWebView2_Impl,
2564            const OFFSET: isize,
2565        >(
2566            this: *mut core::ffi::c_void,
2567            javascript: windows_core::PCWSTR,
2568            handler: *mut core::ffi::c_void,
2569        ) -> windows_core::HRESULT {
2570            unsafe {
2571                let this: &Identity =
2572                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2573                ICoreWebView2_Impl::AddScriptToExecuteOnDocumentCreated(
2574                    this,
2575                    core::mem::transmute(&javascript),
2576                    core::mem::transmute_copy(&handler),
2577                )
2578                .into()
2579            }
2580        }
2581        unsafe extern "system" fn RemoveScriptToExecuteOnDocumentCreated<
2582            Identity: ICoreWebView2_Impl,
2583            const OFFSET: isize,
2584        >(
2585            this: *mut core::ffi::c_void,
2586            id: windows_core::PCWSTR,
2587        ) -> windows_core::HRESULT {
2588            unsafe {
2589                let this: &Identity =
2590                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2591                ICoreWebView2_Impl::RemoveScriptToExecuteOnDocumentCreated(
2592                    this,
2593                    core::mem::transmute(&id),
2594                )
2595                .into()
2596            }
2597        }
2598        unsafe extern "system" fn ExecuteScript<
2599            Identity: ICoreWebView2_Impl,
2600            const OFFSET: isize,
2601        >(
2602            this: *mut core::ffi::c_void,
2603            javascript: windows_core::PCWSTR,
2604            handler: *mut core::ffi::c_void,
2605        ) -> windows_core::HRESULT {
2606            unsafe {
2607                let this: &Identity =
2608                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2609                ICoreWebView2_Impl::ExecuteScript(
2610                    this,
2611                    core::mem::transmute(&javascript),
2612                    core::mem::transmute_copy(&handler),
2613                )
2614                .into()
2615            }
2616        }
2617        unsafe extern "system" fn CapturePreview<
2618            Identity: ICoreWebView2_Impl,
2619            const OFFSET: isize,
2620        >(
2621            this: *mut core::ffi::c_void,
2622            imageformat: COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT,
2623            imagestream: *mut core::ffi::c_void,
2624            handler: *mut core::ffi::c_void,
2625        ) -> windows_core::HRESULT {
2626            unsafe {
2627                let this: &Identity =
2628                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2629                ICoreWebView2_Impl::CapturePreview(
2630                    this,
2631                    core::mem::transmute_copy(&imageformat),
2632                    core::mem::transmute_copy(&imagestream),
2633                    core::mem::transmute_copy(&handler),
2634                )
2635                .into()
2636            }
2637        }
2638        unsafe extern "system" fn Reload<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2639            this: *mut core::ffi::c_void,
2640        ) -> windows_core::HRESULT {
2641            unsafe {
2642                let this: &Identity =
2643                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2644                ICoreWebView2_Impl::Reload(this).into()
2645            }
2646        }
2647        unsafe extern "system" fn PostWebMessageAsJson<
2648            Identity: ICoreWebView2_Impl,
2649            const OFFSET: isize,
2650        >(
2651            this: *mut core::ffi::c_void,
2652            webmessageasjson: windows_core::PCWSTR,
2653        ) -> windows_core::HRESULT {
2654            unsafe {
2655                let this: &Identity =
2656                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2657                ICoreWebView2_Impl::PostWebMessageAsJson(
2658                    this,
2659                    core::mem::transmute(&webmessageasjson),
2660                )
2661                .into()
2662            }
2663        }
2664        unsafe extern "system" fn PostWebMessageAsString<
2665            Identity: ICoreWebView2_Impl,
2666            const OFFSET: isize,
2667        >(
2668            this: *mut core::ffi::c_void,
2669            webmessageasstring: windows_core::PCWSTR,
2670        ) -> windows_core::HRESULT {
2671            unsafe {
2672                let this: &Identity =
2673                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2674                ICoreWebView2_Impl::PostWebMessageAsString(
2675                    this,
2676                    core::mem::transmute(&webmessageasstring),
2677                )
2678                .into()
2679            }
2680        }
2681        unsafe extern "system" fn add_WebMessageReceived<
2682            Identity: ICoreWebView2_Impl,
2683            const OFFSET: isize,
2684        >(
2685            this: *mut core::ffi::c_void,
2686            handler: *mut core::ffi::c_void,
2687            token: *mut i64,
2688        ) -> windows_core::HRESULT {
2689            unsafe {
2690                let this: &Identity =
2691                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2692                ICoreWebView2_Impl::add_WebMessageReceived(
2693                    this,
2694                    core::mem::transmute_copy(&handler),
2695                    core::mem::transmute_copy(&token),
2696                )
2697                .into()
2698            }
2699        }
2700        unsafe extern "system" fn remove_WebMessageReceived<
2701            Identity: ICoreWebView2_Impl,
2702            const OFFSET: isize,
2703        >(
2704            this: *mut core::ffi::c_void,
2705            token: i64,
2706        ) -> windows_core::HRESULT {
2707            unsafe {
2708                let this: &Identity =
2709                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2710                ICoreWebView2_Impl::remove_WebMessageReceived(
2711                    this,
2712                    core::mem::transmute_copy(&token),
2713                )
2714                .into()
2715            }
2716        }
2717        unsafe extern "system" fn CallDevToolsProtocolMethod<
2718            Identity: ICoreWebView2_Impl,
2719            const OFFSET: isize,
2720        >(
2721            this: *mut core::ffi::c_void,
2722            methodname: windows_core::PCWSTR,
2723            parametersasjson: windows_core::PCWSTR,
2724            handler: *mut core::ffi::c_void,
2725        ) -> windows_core::HRESULT {
2726            unsafe {
2727                let this: &Identity =
2728                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2729                ICoreWebView2_Impl::CallDevToolsProtocolMethod(
2730                    this,
2731                    core::mem::transmute(&methodname),
2732                    core::mem::transmute(&parametersasjson),
2733                    core::mem::transmute_copy(&handler),
2734                )
2735                .into()
2736            }
2737        }
2738        unsafe extern "system" fn BrowserProcessId<
2739            Identity: ICoreWebView2_Impl,
2740            const OFFSET: isize,
2741        >(
2742            this: *mut core::ffi::c_void,
2743            value: *mut u32,
2744        ) -> windows_core::HRESULT {
2745            unsafe {
2746                let this: &Identity =
2747                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2748                ICoreWebView2_Impl::BrowserProcessId(this, core::mem::transmute_copy(&value)).into()
2749            }
2750        }
2751        unsafe extern "system" fn CanGoBack<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2752            this: *mut core::ffi::c_void,
2753            cangoback: *mut windows_core::BOOL,
2754        ) -> windows_core::HRESULT {
2755            unsafe {
2756                let this: &Identity =
2757                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2758                ICoreWebView2_Impl::CanGoBack(this, core::mem::transmute_copy(&cangoback)).into()
2759            }
2760        }
2761        unsafe extern "system" fn CanGoForward<
2762            Identity: ICoreWebView2_Impl,
2763            const OFFSET: isize,
2764        >(
2765            this: *mut core::ffi::c_void,
2766            cangoforward: *mut windows_core::BOOL,
2767        ) -> windows_core::HRESULT {
2768            unsafe {
2769                let this: &Identity =
2770                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2771                ICoreWebView2_Impl::CanGoForward(this, core::mem::transmute_copy(&cangoforward))
2772                    .into()
2773            }
2774        }
2775        unsafe extern "system" fn GoBack<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2776            this: *mut core::ffi::c_void,
2777        ) -> windows_core::HRESULT {
2778            unsafe {
2779                let this: &Identity =
2780                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2781                ICoreWebView2_Impl::GoBack(this).into()
2782            }
2783        }
2784        unsafe extern "system" fn GoForward<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2785            this: *mut core::ffi::c_void,
2786        ) -> windows_core::HRESULT {
2787            unsafe {
2788                let this: &Identity =
2789                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2790                ICoreWebView2_Impl::GoForward(this).into()
2791            }
2792        }
2793        unsafe extern "system" fn GetDevToolsProtocolEventReceiver<
2794            Identity: ICoreWebView2_Impl,
2795            const OFFSET: isize,
2796        >(
2797            this: *mut core::ffi::c_void,
2798            eventname: windows_core::PCWSTR,
2799            receiver: *mut *mut core::ffi::c_void,
2800        ) -> windows_core::HRESULT {
2801            unsafe {
2802                let this: &Identity =
2803                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2804                match ICoreWebView2_Impl::GetDevToolsProtocolEventReceiver(
2805                    this,
2806                    core::mem::transmute(&eventname),
2807                ) {
2808                    Ok(ok__) => {
2809                        receiver.write(core::mem::transmute(ok__));
2810                        windows_core::HRESULT(0)
2811                    }
2812                    Err(err) => err.into(),
2813                }
2814            }
2815        }
2816        unsafe extern "system" fn Stop<Identity: ICoreWebView2_Impl, const OFFSET: isize>(
2817            this: *mut core::ffi::c_void,
2818        ) -> windows_core::HRESULT {
2819            unsafe {
2820                let this: &Identity =
2821                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2822                ICoreWebView2_Impl::Stop(this).into()
2823            }
2824        }
2825        unsafe extern "system" fn add_NewWindowRequested<
2826            Identity: ICoreWebView2_Impl,
2827            const OFFSET: isize,
2828        >(
2829            this: *mut core::ffi::c_void,
2830            eventhandler: *mut core::ffi::c_void,
2831            token: *mut i64,
2832        ) -> windows_core::HRESULT {
2833            unsafe {
2834                let this: &Identity =
2835                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2836                ICoreWebView2_Impl::add_NewWindowRequested(
2837                    this,
2838                    core::mem::transmute_copy(&eventhandler),
2839                    core::mem::transmute_copy(&token),
2840                )
2841                .into()
2842            }
2843        }
2844        unsafe extern "system" fn remove_NewWindowRequested<
2845            Identity: ICoreWebView2_Impl,
2846            const OFFSET: isize,
2847        >(
2848            this: *mut core::ffi::c_void,
2849            token: i64,
2850        ) -> windows_core::HRESULT {
2851            unsafe {
2852                let this: &Identity =
2853                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2854                ICoreWebView2_Impl::remove_NewWindowRequested(
2855                    this,
2856                    core::mem::transmute_copy(&token),
2857                )
2858                .into()
2859            }
2860        }
2861        unsafe extern "system" fn add_DocumentTitleChanged<
2862            Identity: ICoreWebView2_Impl,
2863            const OFFSET: isize,
2864        >(
2865            this: *mut core::ffi::c_void,
2866            eventhandler: *mut core::ffi::c_void,
2867            token: *mut i64,
2868        ) -> windows_core::HRESULT {
2869            unsafe {
2870                let this: &Identity =
2871                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2872                ICoreWebView2_Impl::add_DocumentTitleChanged(
2873                    this,
2874                    core::mem::transmute_copy(&eventhandler),
2875                    core::mem::transmute_copy(&token),
2876                )
2877                .into()
2878            }
2879        }
2880        unsafe extern "system" fn remove_DocumentTitleChanged<
2881            Identity: ICoreWebView2_Impl,
2882            const OFFSET: isize,
2883        >(
2884            this: *mut core::ffi::c_void,
2885            token: i64,
2886        ) -> windows_core::HRESULT {
2887            unsafe {
2888                let this: &Identity =
2889                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2890                ICoreWebView2_Impl::remove_DocumentTitleChanged(
2891                    this,
2892                    core::mem::transmute_copy(&token),
2893                )
2894                .into()
2895            }
2896        }
2897        unsafe extern "system" fn DocumentTitle<
2898            Identity: ICoreWebView2_Impl,
2899            const OFFSET: isize,
2900        >(
2901            this: *mut core::ffi::c_void,
2902            title: *mut windows_core::PWSTR,
2903        ) -> windows_core::HRESULT {
2904            unsafe {
2905                let this: &Identity =
2906                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2907                ICoreWebView2_Impl::DocumentTitle(this, core::mem::transmute_copy(&title)).into()
2908            }
2909        }
2910        unsafe extern "system" fn AddHostObjectToScript<
2911            Identity: ICoreWebView2_Impl,
2912            const OFFSET: isize,
2913        >(
2914            this: *mut core::ffi::c_void,
2915            name: windows_core::PCWSTR,
2916            object: *mut windows::Win32::System::Variant::VARIANT,
2917        ) -> windows_core::HRESULT {
2918            unsafe {
2919                let this: &Identity =
2920                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2921                ICoreWebView2_Impl::AddHostObjectToScript(
2922                    this,
2923                    core::mem::transmute(&name),
2924                    core::mem::transmute_copy(&object),
2925                )
2926                .into()
2927            }
2928        }
2929        unsafe extern "system" fn RemoveHostObjectFromScript<
2930            Identity: ICoreWebView2_Impl,
2931            const OFFSET: isize,
2932        >(
2933            this: *mut core::ffi::c_void,
2934            name: windows_core::PCWSTR,
2935        ) -> windows_core::HRESULT {
2936            unsafe {
2937                let this: &Identity =
2938                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2939                ICoreWebView2_Impl::RemoveHostObjectFromScript(this, core::mem::transmute(&name))
2940                    .into()
2941            }
2942        }
2943        unsafe extern "system" fn OpenDevToolsWindow<
2944            Identity: ICoreWebView2_Impl,
2945            const OFFSET: isize,
2946        >(
2947            this: *mut core::ffi::c_void,
2948        ) -> windows_core::HRESULT {
2949            unsafe {
2950                let this: &Identity =
2951                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2952                ICoreWebView2_Impl::OpenDevToolsWindow(this).into()
2953            }
2954        }
2955        unsafe extern "system" fn add_ContainsFullScreenElementChanged<
2956            Identity: ICoreWebView2_Impl,
2957            const OFFSET: isize,
2958        >(
2959            this: *mut core::ffi::c_void,
2960            eventhandler: *mut core::ffi::c_void,
2961            token: *mut i64,
2962        ) -> windows_core::HRESULT {
2963            unsafe {
2964                let this: &Identity =
2965                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2966                ICoreWebView2_Impl::add_ContainsFullScreenElementChanged(
2967                    this,
2968                    core::mem::transmute_copy(&eventhandler),
2969                    core::mem::transmute_copy(&token),
2970                )
2971                .into()
2972            }
2973        }
2974        unsafe extern "system" fn remove_ContainsFullScreenElementChanged<
2975            Identity: ICoreWebView2_Impl,
2976            const OFFSET: isize,
2977        >(
2978            this: *mut core::ffi::c_void,
2979            token: i64,
2980        ) -> windows_core::HRESULT {
2981            unsafe {
2982                let this: &Identity =
2983                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2984                ICoreWebView2_Impl::remove_ContainsFullScreenElementChanged(
2985                    this,
2986                    core::mem::transmute_copy(&token),
2987                )
2988                .into()
2989            }
2990        }
2991        unsafe extern "system" fn ContainsFullScreenElement<
2992            Identity: ICoreWebView2_Impl,
2993            const OFFSET: isize,
2994        >(
2995            this: *mut core::ffi::c_void,
2996            containsfullscreenelement: *mut windows_core::BOOL,
2997        ) -> windows_core::HRESULT {
2998            unsafe {
2999                let this: &Identity =
3000                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3001                ICoreWebView2_Impl::ContainsFullScreenElement(
3002                    this,
3003                    core::mem::transmute_copy(&containsfullscreenelement),
3004                )
3005                .into()
3006            }
3007        }
3008        unsafe extern "system" fn add_WebResourceRequested<
3009            Identity: ICoreWebView2_Impl,
3010            const OFFSET: isize,
3011        >(
3012            this: *mut core::ffi::c_void,
3013            eventhandler: *mut core::ffi::c_void,
3014            token: *mut i64,
3015        ) -> windows_core::HRESULT {
3016            unsafe {
3017                let this: &Identity =
3018                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3019                ICoreWebView2_Impl::add_WebResourceRequested(
3020                    this,
3021                    core::mem::transmute_copy(&eventhandler),
3022                    core::mem::transmute_copy(&token),
3023                )
3024                .into()
3025            }
3026        }
3027        unsafe extern "system" fn remove_WebResourceRequested<
3028            Identity: ICoreWebView2_Impl,
3029            const OFFSET: isize,
3030        >(
3031            this: *mut core::ffi::c_void,
3032            token: i64,
3033        ) -> windows_core::HRESULT {
3034            unsafe {
3035                let this: &Identity =
3036                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3037                ICoreWebView2_Impl::remove_WebResourceRequested(
3038                    this,
3039                    core::mem::transmute_copy(&token),
3040                )
3041                .into()
3042            }
3043        }
3044        unsafe extern "system" fn AddWebResourceRequestedFilter<
3045            Identity: ICoreWebView2_Impl,
3046            const OFFSET: isize,
3047        >(
3048            this: *mut core::ffi::c_void,
3049            uri: windows_core::PCWSTR,
3050            resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
3051        ) -> windows_core::HRESULT {
3052            unsafe {
3053                let this: &Identity =
3054                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3055                ICoreWebView2_Impl::AddWebResourceRequestedFilter(
3056                    this,
3057                    core::mem::transmute(&uri),
3058                    core::mem::transmute_copy(&resourcecontext),
3059                )
3060                .into()
3061            }
3062        }
3063        unsafe extern "system" fn RemoveWebResourceRequestedFilter<
3064            Identity: ICoreWebView2_Impl,
3065            const OFFSET: isize,
3066        >(
3067            this: *mut core::ffi::c_void,
3068            uri: windows_core::PCWSTR,
3069            resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
3070        ) -> windows_core::HRESULT {
3071            unsafe {
3072                let this: &Identity =
3073                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3074                ICoreWebView2_Impl::RemoveWebResourceRequestedFilter(
3075                    this,
3076                    core::mem::transmute(&uri),
3077                    core::mem::transmute_copy(&resourcecontext),
3078                )
3079                .into()
3080            }
3081        }
3082        unsafe extern "system" fn add_WindowCloseRequested<
3083            Identity: ICoreWebView2_Impl,
3084            const OFFSET: isize,
3085        >(
3086            this: *mut core::ffi::c_void,
3087            eventhandler: *mut core::ffi::c_void,
3088            token: *mut i64,
3089        ) -> windows_core::HRESULT {
3090            unsafe {
3091                let this: &Identity =
3092                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3093                ICoreWebView2_Impl::add_WindowCloseRequested(
3094                    this,
3095                    core::mem::transmute_copy(&eventhandler),
3096                    core::mem::transmute_copy(&token),
3097                )
3098                .into()
3099            }
3100        }
3101        unsafe extern "system" fn remove_WindowCloseRequested<
3102            Identity: ICoreWebView2_Impl,
3103            const OFFSET: isize,
3104        >(
3105            this: *mut core::ffi::c_void,
3106            token: i64,
3107        ) -> windows_core::HRESULT {
3108            unsafe {
3109                let this: &Identity =
3110                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3111                ICoreWebView2_Impl::remove_WindowCloseRequested(
3112                    this,
3113                    core::mem::transmute_copy(&token),
3114                )
3115                .into()
3116            }
3117        }
3118        Self {
3119            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3120            Settings: Settings::<Identity, OFFSET>,
3121            Source: Source::<Identity, OFFSET>,
3122            Navigate: Navigate::<Identity, OFFSET>,
3123            NavigateToString: NavigateToString::<Identity, OFFSET>,
3124            add_NavigationStarting: add_NavigationStarting::<Identity, OFFSET>,
3125            remove_NavigationStarting: remove_NavigationStarting::<Identity, OFFSET>,
3126            add_ContentLoading: add_ContentLoading::<Identity, OFFSET>,
3127            remove_ContentLoading: remove_ContentLoading::<Identity, OFFSET>,
3128            add_SourceChanged: add_SourceChanged::<Identity, OFFSET>,
3129            remove_SourceChanged: remove_SourceChanged::<Identity, OFFSET>,
3130            add_HistoryChanged: add_HistoryChanged::<Identity, OFFSET>,
3131            remove_HistoryChanged: remove_HistoryChanged::<Identity, OFFSET>,
3132            add_NavigationCompleted: add_NavigationCompleted::<Identity, OFFSET>,
3133            remove_NavigationCompleted: remove_NavigationCompleted::<Identity, OFFSET>,
3134            add_FrameNavigationStarting: add_FrameNavigationStarting::<Identity, OFFSET>,
3135            remove_FrameNavigationStarting: remove_FrameNavigationStarting::<Identity, OFFSET>,
3136            add_FrameNavigationCompleted: add_FrameNavigationCompleted::<Identity, OFFSET>,
3137            remove_FrameNavigationCompleted: remove_FrameNavigationCompleted::<Identity, OFFSET>,
3138            add_ScriptDialogOpening: add_ScriptDialogOpening::<Identity, OFFSET>,
3139            remove_ScriptDialogOpening: remove_ScriptDialogOpening::<Identity, OFFSET>,
3140            add_PermissionRequested: add_PermissionRequested::<Identity, OFFSET>,
3141            remove_PermissionRequested: remove_PermissionRequested::<Identity, OFFSET>,
3142            add_ProcessFailed: add_ProcessFailed::<Identity, OFFSET>,
3143            remove_ProcessFailed: remove_ProcessFailed::<Identity, OFFSET>,
3144            AddScriptToExecuteOnDocumentCreated: AddScriptToExecuteOnDocumentCreated::<
3145                Identity,
3146                OFFSET,
3147            >,
3148            RemoveScriptToExecuteOnDocumentCreated: RemoveScriptToExecuteOnDocumentCreated::<
3149                Identity,
3150                OFFSET,
3151            >,
3152            ExecuteScript: ExecuteScript::<Identity, OFFSET>,
3153            CapturePreview: CapturePreview::<Identity, OFFSET>,
3154            Reload: Reload::<Identity, OFFSET>,
3155            PostWebMessageAsJson: PostWebMessageAsJson::<Identity, OFFSET>,
3156            PostWebMessageAsString: PostWebMessageAsString::<Identity, OFFSET>,
3157            add_WebMessageReceived: add_WebMessageReceived::<Identity, OFFSET>,
3158            remove_WebMessageReceived: remove_WebMessageReceived::<Identity, OFFSET>,
3159            CallDevToolsProtocolMethod: CallDevToolsProtocolMethod::<Identity, OFFSET>,
3160            BrowserProcessId: BrowserProcessId::<Identity, OFFSET>,
3161            CanGoBack: CanGoBack::<Identity, OFFSET>,
3162            CanGoForward: CanGoForward::<Identity, OFFSET>,
3163            GoBack: GoBack::<Identity, OFFSET>,
3164            GoForward: GoForward::<Identity, OFFSET>,
3165            GetDevToolsProtocolEventReceiver: GetDevToolsProtocolEventReceiver::<Identity, OFFSET>,
3166            Stop: Stop::<Identity, OFFSET>,
3167            add_NewWindowRequested: add_NewWindowRequested::<Identity, OFFSET>,
3168            remove_NewWindowRequested: remove_NewWindowRequested::<Identity, OFFSET>,
3169            add_DocumentTitleChanged: add_DocumentTitleChanged::<Identity, OFFSET>,
3170            remove_DocumentTitleChanged: remove_DocumentTitleChanged::<Identity, OFFSET>,
3171            DocumentTitle: DocumentTitle::<Identity, OFFSET>,
3172            AddHostObjectToScript: AddHostObjectToScript::<Identity, OFFSET>,
3173            RemoveHostObjectFromScript: RemoveHostObjectFromScript::<Identity, OFFSET>,
3174            OpenDevToolsWindow: OpenDevToolsWindow::<Identity, OFFSET>,
3175            add_ContainsFullScreenElementChanged: add_ContainsFullScreenElementChanged::<
3176                Identity,
3177                OFFSET,
3178            >,
3179            remove_ContainsFullScreenElementChanged: remove_ContainsFullScreenElementChanged::<
3180                Identity,
3181                OFFSET,
3182            >,
3183            ContainsFullScreenElement: ContainsFullScreenElement::<Identity, OFFSET>,
3184            add_WebResourceRequested: add_WebResourceRequested::<Identity, OFFSET>,
3185            remove_WebResourceRequested: remove_WebResourceRequested::<Identity, OFFSET>,
3186            AddWebResourceRequestedFilter: AddWebResourceRequestedFilter::<Identity, OFFSET>,
3187            RemoveWebResourceRequestedFilter: RemoveWebResourceRequestedFilter::<Identity, OFFSET>,
3188            add_WindowCloseRequested: add_WindowCloseRequested::<Identity, OFFSET>,
3189            remove_WindowCloseRequested: remove_WindowCloseRequested::<Identity, OFFSET>,
3190        }
3191    }
3192    pub fn matches(iid: &windows_core::GUID) -> bool {
3193        iid == &<ICoreWebView2 as windows_core::Interface>::IID
3194    }
3195}
3196impl windows_core::RuntimeName for ICoreWebView2 {}
3197windows_core::imp::define_interface!(
3198    ICoreWebView2AcceleratorKeyPressedEventArgs,
3199    ICoreWebView2AcceleratorKeyPressedEventArgs_Vtbl,
3200    0x9f760f8a_fb79_42be_9990_7b56900fa9c7
3201);
3202windows_core::imp::interface_hierarchy!(
3203    ICoreWebView2AcceleratorKeyPressedEventArgs,
3204    windows_core::IUnknown
3205);
3206impl ICoreWebView2AcceleratorKeyPressedEventArgs {
3207    pub unsafe fn KeyEventKind(
3208        &self,
3209        keyeventkind: *mut COREWEBVIEW2_KEY_EVENT_KIND,
3210    ) -> windows_core::Result<()> {
3211        unsafe {
3212            (windows_core::Interface::vtable(self).KeyEventKind)(
3213                windows_core::Interface::as_raw(self),
3214                keyeventkind as _,
3215            )
3216            .ok()
3217        }
3218    }
3219    pub unsafe fn VirtualKey(&self, virtualkey: *mut u32) -> windows_core::Result<()> {
3220        unsafe {
3221            (windows_core::Interface::vtable(self).VirtualKey)(
3222                windows_core::Interface::as_raw(self),
3223                virtualkey as _,
3224            )
3225            .ok()
3226        }
3227    }
3228    pub unsafe fn KeyEventLParam(&self, lparam: *mut i32) -> windows_core::Result<()> {
3229        unsafe {
3230            (windows_core::Interface::vtable(self).KeyEventLParam)(
3231                windows_core::Interface::as_raw(self),
3232                lparam as _,
3233            )
3234            .ok()
3235        }
3236    }
3237    pub unsafe fn PhysicalKeyStatus(
3238        &self,
3239        physicalkeystatus: *mut COREWEBVIEW2_PHYSICAL_KEY_STATUS,
3240    ) -> windows_core::Result<()> {
3241        unsafe {
3242            (windows_core::Interface::vtable(self).PhysicalKeyStatus)(
3243                windows_core::Interface::as_raw(self),
3244                physicalkeystatus as _,
3245            )
3246            .ok()
3247        }
3248    }
3249    pub unsafe fn Handled(&self, handled: *mut windows_core::BOOL) -> windows_core::Result<()> {
3250        unsafe {
3251            (windows_core::Interface::vtable(self).Handled)(
3252                windows_core::Interface::as_raw(self),
3253                handled as _,
3254            )
3255            .ok()
3256        }
3257    }
3258    pub unsafe fn SetHandled(&self, handled: bool) -> windows_core::Result<()> {
3259        unsafe {
3260            (windows_core::Interface::vtable(self).SetHandled)(
3261                windows_core::Interface::as_raw(self),
3262                handled.into(),
3263            )
3264            .ok()
3265        }
3266    }
3267}
3268#[repr(C)]
3269#[doc(hidden)]
3270pub struct ICoreWebView2AcceleratorKeyPressedEventArgs_Vtbl {
3271    pub base__: windows_core::IUnknown_Vtbl,
3272    pub KeyEventKind: unsafe extern "system" fn(
3273        *mut core::ffi::c_void,
3274        *mut COREWEBVIEW2_KEY_EVENT_KIND,
3275    ) -> windows_core::HRESULT,
3276    pub VirtualKey:
3277        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
3278    pub KeyEventLParam:
3279        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
3280    pub PhysicalKeyStatus: unsafe extern "system" fn(
3281        *mut core::ffi::c_void,
3282        *mut COREWEBVIEW2_PHYSICAL_KEY_STATUS,
3283    ) -> windows_core::HRESULT,
3284    pub Handled: unsafe extern "system" fn(
3285        *mut core::ffi::c_void,
3286        *mut windows_core::BOOL,
3287    ) -> windows_core::HRESULT,
3288    pub SetHandled: unsafe extern "system" fn(
3289        *mut core::ffi::c_void,
3290        windows_core::BOOL,
3291    ) -> windows_core::HRESULT,
3292}
3293pub trait ICoreWebView2AcceleratorKeyPressedEventArgs_Impl: windows_core::IUnknownImpl {
3294    fn KeyEventKind(
3295        &self,
3296        keyeventkind: *mut COREWEBVIEW2_KEY_EVENT_KIND,
3297    ) -> windows_core::Result<()>;
3298    fn VirtualKey(&self, virtualkey: *mut u32) -> windows_core::Result<()>;
3299    fn KeyEventLParam(&self, lparam: *mut i32) -> windows_core::Result<()>;
3300    fn PhysicalKeyStatus(
3301        &self,
3302        physicalkeystatus: *mut COREWEBVIEW2_PHYSICAL_KEY_STATUS,
3303    ) -> windows_core::Result<()>;
3304    fn Handled(&self, handled: *mut windows_core::BOOL) -> windows_core::Result<()>;
3305    fn SetHandled(&self, handled: windows_core::BOOL) -> windows_core::Result<()>;
3306}
3307impl ICoreWebView2AcceleratorKeyPressedEventArgs_Vtbl {
3308    pub const fn new<
3309        Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3310        const OFFSET: isize,
3311    >() -> Self {
3312        unsafe extern "system" fn KeyEventKind<
3313            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3314            const OFFSET: isize,
3315        >(
3316            this: *mut core::ffi::c_void,
3317            keyeventkind: *mut COREWEBVIEW2_KEY_EVENT_KIND,
3318        ) -> windows_core::HRESULT {
3319            unsafe {
3320                let this: &Identity =
3321                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3322                ICoreWebView2AcceleratorKeyPressedEventArgs_Impl::KeyEventKind(
3323                    this,
3324                    core::mem::transmute_copy(&keyeventkind),
3325                )
3326                .into()
3327            }
3328        }
3329        unsafe extern "system" fn VirtualKey<
3330            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3331            const OFFSET: isize,
3332        >(
3333            this: *mut core::ffi::c_void,
3334            virtualkey: *mut u32,
3335        ) -> windows_core::HRESULT {
3336            unsafe {
3337                let this: &Identity =
3338                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3339                ICoreWebView2AcceleratorKeyPressedEventArgs_Impl::VirtualKey(
3340                    this,
3341                    core::mem::transmute_copy(&virtualkey),
3342                )
3343                .into()
3344            }
3345        }
3346        unsafe extern "system" fn KeyEventLParam<
3347            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3348            const OFFSET: isize,
3349        >(
3350            this: *mut core::ffi::c_void,
3351            lparam: *mut i32,
3352        ) -> windows_core::HRESULT {
3353            unsafe {
3354                let this: &Identity =
3355                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3356                ICoreWebView2AcceleratorKeyPressedEventArgs_Impl::KeyEventLParam(
3357                    this,
3358                    core::mem::transmute_copy(&lparam),
3359                )
3360                .into()
3361            }
3362        }
3363        unsafe extern "system" fn PhysicalKeyStatus<
3364            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3365            const OFFSET: isize,
3366        >(
3367            this: *mut core::ffi::c_void,
3368            physicalkeystatus: *mut COREWEBVIEW2_PHYSICAL_KEY_STATUS,
3369        ) -> windows_core::HRESULT {
3370            unsafe {
3371                let this: &Identity =
3372                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3373                ICoreWebView2AcceleratorKeyPressedEventArgs_Impl::PhysicalKeyStatus(
3374                    this,
3375                    core::mem::transmute_copy(&physicalkeystatus),
3376                )
3377                .into()
3378            }
3379        }
3380        unsafe extern "system" fn Handled<
3381            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3382            const OFFSET: isize,
3383        >(
3384            this: *mut core::ffi::c_void,
3385            handled: *mut windows_core::BOOL,
3386        ) -> windows_core::HRESULT {
3387            unsafe {
3388                let this: &Identity =
3389                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3390                ICoreWebView2AcceleratorKeyPressedEventArgs_Impl::Handled(
3391                    this,
3392                    core::mem::transmute_copy(&handled),
3393                )
3394                .into()
3395            }
3396        }
3397        unsafe extern "system" fn SetHandled<
3398            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs_Impl,
3399            const OFFSET: isize,
3400        >(
3401            this: *mut core::ffi::c_void,
3402            handled: windows_core::BOOL,
3403        ) -> windows_core::HRESULT {
3404            unsafe {
3405                let this: &Identity =
3406                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3407                ICoreWebView2AcceleratorKeyPressedEventArgs_Impl::SetHandled(
3408                    this,
3409                    core::mem::transmute_copy(&handled),
3410                )
3411                .into()
3412            }
3413        }
3414        Self {
3415            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3416            KeyEventKind: KeyEventKind::<Identity, OFFSET>,
3417            VirtualKey: VirtualKey::<Identity, OFFSET>,
3418            KeyEventLParam: KeyEventLParam::<Identity, OFFSET>,
3419            PhysicalKeyStatus: PhysicalKeyStatus::<Identity, OFFSET>,
3420            Handled: Handled::<Identity, OFFSET>,
3421            SetHandled: SetHandled::<Identity, OFFSET>,
3422        }
3423    }
3424    pub fn matches(iid: &windows_core::GUID) -> bool {
3425        iid == &<ICoreWebView2AcceleratorKeyPressedEventArgs as windows_core::Interface>::IID
3426    }
3427}
3428impl windows_core::RuntimeName for ICoreWebView2AcceleratorKeyPressedEventArgs {}
3429windows_core::imp::define_interface!(
3430    ICoreWebView2AcceleratorKeyPressedEventArgs2,
3431    ICoreWebView2AcceleratorKeyPressedEventArgs2_Vtbl,
3432    0x03b2c8c8_7799_4e34_bd66_ed26aa85f2bf
3433);
3434impl core::ops::Deref for ICoreWebView2AcceleratorKeyPressedEventArgs2 {
3435    type Target = ICoreWebView2AcceleratorKeyPressedEventArgs;
3436    fn deref(&self) -> &Self::Target {
3437        unsafe { core::mem::transmute(self) }
3438    }
3439}
3440windows_core::imp::interface_hierarchy!(
3441    ICoreWebView2AcceleratorKeyPressedEventArgs2,
3442    windows_core::IUnknown,
3443    ICoreWebView2AcceleratorKeyPressedEventArgs
3444);
3445impl ICoreWebView2AcceleratorKeyPressedEventArgs2 {
3446    pub unsafe fn IsBrowserAcceleratorKeyEnabled(
3447        &self,
3448        value: *mut windows_core::BOOL,
3449    ) -> windows_core::Result<()> {
3450        unsafe {
3451            (windows_core::Interface::vtable(self).IsBrowserAcceleratorKeyEnabled)(
3452                windows_core::Interface::as_raw(self),
3453                value as _,
3454            )
3455            .ok()
3456        }
3457    }
3458    pub unsafe fn SetIsBrowserAcceleratorKeyEnabled(
3459        &self,
3460        value: bool,
3461    ) -> windows_core::Result<()> {
3462        unsafe {
3463            (windows_core::Interface::vtable(self).SetIsBrowserAcceleratorKeyEnabled)(
3464                windows_core::Interface::as_raw(self),
3465                value.into(),
3466            )
3467            .ok()
3468        }
3469    }
3470}
3471#[repr(C)]
3472#[doc(hidden)]
3473pub struct ICoreWebView2AcceleratorKeyPressedEventArgs2_Vtbl {
3474    pub base__: ICoreWebView2AcceleratorKeyPressedEventArgs_Vtbl,
3475    pub IsBrowserAcceleratorKeyEnabled: unsafe extern "system" fn(
3476        *mut core::ffi::c_void,
3477        *mut windows_core::BOOL,
3478    ) -> windows_core::HRESULT,
3479    pub SetIsBrowserAcceleratorKeyEnabled: unsafe extern "system" fn(
3480        *mut core::ffi::c_void,
3481        windows_core::BOOL,
3482    ) -> windows_core::HRESULT,
3483}
3484pub trait ICoreWebView2AcceleratorKeyPressedEventArgs2_Impl:
3485    ICoreWebView2AcceleratorKeyPressedEventArgs_Impl
3486{
3487    fn IsBrowserAcceleratorKeyEnabled(
3488        &self,
3489        value: *mut windows_core::BOOL,
3490    ) -> windows_core::Result<()>;
3491    fn SetIsBrowserAcceleratorKeyEnabled(
3492        &self,
3493        value: windows_core::BOOL,
3494    ) -> windows_core::Result<()>;
3495}
3496impl ICoreWebView2AcceleratorKeyPressedEventArgs2_Vtbl {
3497    pub const fn new<
3498        Identity: ICoreWebView2AcceleratorKeyPressedEventArgs2_Impl,
3499        const OFFSET: isize,
3500    >() -> Self {
3501        unsafe extern "system" fn IsBrowserAcceleratorKeyEnabled<
3502            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs2_Impl,
3503            const OFFSET: isize,
3504        >(
3505            this: *mut core::ffi::c_void,
3506            value: *mut windows_core::BOOL,
3507        ) -> windows_core::HRESULT {
3508            unsafe {
3509                let this: &Identity =
3510                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3511                ICoreWebView2AcceleratorKeyPressedEventArgs2_Impl::IsBrowserAcceleratorKeyEnabled(
3512                    this,
3513                    core::mem::transmute_copy(&value),
3514                )
3515                .into()
3516            }
3517        }
3518        unsafe extern "system" fn SetIsBrowserAcceleratorKeyEnabled<
3519            Identity: ICoreWebView2AcceleratorKeyPressedEventArgs2_Impl,
3520            const OFFSET: isize,
3521        >(
3522            this: *mut core::ffi::c_void,
3523            value: windows_core::BOOL,
3524        ) -> windows_core::HRESULT {
3525            unsafe {
3526                let this: &Identity =
3527                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3528                ICoreWebView2AcceleratorKeyPressedEventArgs2_Impl:: SetIsBrowserAcceleratorKeyEnabled ( this , core::mem::transmute_copy ( & value ) , ) . into ( )
3529            }
3530        }
3531        Self {
3532            base__: ICoreWebView2AcceleratorKeyPressedEventArgs_Vtbl::new::<Identity, OFFSET>(),
3533            IsBrowserAcceleratorKeyEnabled: IsBrowserAcceleratorKeyEnabled::<Identity, OFFSET>,
3534            SetIsBrowserAcceleratorKeyEnabled: SetIsBrowserAcceleratorKeyEnabled::<Identity, OFFSET>,
3535        }
3536    }
3537    pub fn matches(iid: &windows_core::GUID) -> bool {
3538        iid == &<ICoreWebView2AcceleratorKeyPressedEventArgs2 as windows_core::Interface>::IID
3539            || iid == &<ICoreWebView2AcceleratorKeyPressedEventArgs as windows_core::Interface>::IID
3540    }
3541}
3542impl windows_core::RuntimeName for ICoreWebView2AcceleratorKeyPressedEventArgs2 {}
3543windows_core::imp::define_interface!(
3544    ICoreWebView2AcceleratorKeyPressedEventHandler,
3545    ICoreWebView2AcceleratorKeyPressedEventHandler_Vtbl,
3546    0xb29c7e28_fa79_41a8_8e44_65811c76dcb2
3547);
3548windows_core::imp::interface_hierarchy!(
3549    ICoreWebView2AcceleratorKeyPressedEventHandler,
3550    windows_core::IUnknown
3551);
3552impl ICoreWebView2AcceleratorKeyPressedEventHandler {
3553    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
3554    where
3555        P0: windows_core::Param<ICoreWebView2Controller>,
3556        P1: windows_core::Param<ICoreWebView2AcceleratorKeyPressedEventArgs>,
3557    {
3558        unsafe {
3559            (windows_core::Interface::vtable(self).Invoke)(
3560                windows_core::Interface::as_raw(self),
3561                sender.param().abi(),
3562                args.param().abi(),
3563            )
3564            .ok()
3565        }
3566    }
3567}
3568#[repr(C)]
3569#[doc(hidden)]
3570pub struct ICoreWebView2AcceleratorKeyPressedEventHandler_Vtbl {
3571    pub base__: windows_core::IUnknown_Vtbl,
3572    pub Invoke: unsafe extern "system" fn(
3573        *mut core::ffi::c_void,
3574        *mut core::ffi::c_void,
3575        *mut core::ffi::c_void,
3576    ) -> windows_core::HRESULT,
3577}
3578pub trait ICoreWebView2AcceleratorKeyPressedEventHandler_Impl: windows_core::IUnknownImpl {
3579    fn Invoke(
3580        &self,
3581        sender: windows_core::Ref<'_, ICoreWebView2Controller>,
3582        args: windows_core::Ref<'_, ICoreWebView2AcceleratorKeyPressedEventArgs>,
3583    ) -> windows_core::Result<()>;
3584}
3585impl ICoreWebView2AcceleratorKeyPressedEventHandler_Vtbl {
3586    pub const fn new<
3587        Identity: ICoreWebView2AcceleratorKeyPressedEventHandler_Impl,
3588        const OFFSET: isize,
3589    >() -> Self {
3590        unsafe extern "system" fn Invoke<
3591            Identity: ICoreWebView2AcceleratorKeyPressedEventHandler_Impl,
3592            const OFFSET: isize,
3593        >(
3594            this: *mut core::ffi::c_void,
3595            sender: *mut core::ffi::c_void,
3596            args: *mut core::ffi::c_void,
3597        ) -> windows_core::HRESULT {
3598            unsafe {
3599                let this: &Identity =
3600                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3601                ICoreWebView2AcceleratorKeyPressedEventHandler_Impl::Invoke(
3602                    this,
3603                    core::mem::transmute_copy(&sender),
3604                    core::mem::transmute_copy(&args),
3605                )
3606                .into()
3607            }
3608        }
3609        Self {
3610            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3611            Invoke: Invoke::<Identity, OFFSET>,
3612        }
3613    }
3614    pub fn matches(iid: &windows_core::GUID) -> bool {
3615        iid == &<ICoreWebView2AcceleratorKeyPressedEventHandler as windows_core::Interface>::IID
3616    }
3617}
3618impl windows_core::RuntimeName for ICoreWebView2AcceleratorKeyPressedEventHandler {}
3619windows_core::imp::define_interface!(
3620    ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler,
3621    ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Vtbl,
3622    0xb99369f3_9b11_47b5_bc6f_8e7895fcea17
3623);
3624windows_core::imp::interface_hierarchy!(
3625    ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler,
3626    windows_core::IUnknown
3627);
3628impl ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler {
3629    pub unsafe fn Invoke<P1>(
3630        &self,
3631        errorcode: windows_core::HRESULT,
3632        result: P1,
3633    ) -> windows_core::Result<()>
3634    where
3635        P1: windows_core::Param<windows_core::PCWSTR>,
3636    {
3637        unsafe {
3638            (windows_core::Interface::vtable(self).Invoke)(
3639                windows_core::Interface::as_raw(self),
3640                errorcode,
3641                result.param().abi(),
3642            )
3643            .ok()
3644        }
3645    }
3646}
3647#[repr(C)]
3648#[doc(hidden)]
3649pub struct ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Vtbl {
3650    pub base__: windows_core::IUnknown_Vtbl,
3651    pub Invoke: unsafe extern "system" fn(
3652        *mut core::ffi::c_void,
3653        windows_core::HRESULT,
3654        windows_core::PCWSTR,
3655    ) -> windows_core::HRESULT,
3656}
3657pub trait ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Impl:
3658    windows_core::IUnknownImpl
3659{
3660    fn Invoke(
3661        &self,
3662        errorcode: windows_core::HRESULT,
3663        result: &windows_core::PCWSTR,
3664    ) -> windows_core::Result<()>;
3665}
3666impl ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Vtbl {
3667    pub const fn new<
3668        Identity: ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Impl,
3669        const OFFSET: isize,
3670    >() -> Self {
3671        unsafe extern "system" fn Invoke<
3672            Identity: ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Impl,
3673            const OFFSET: isize,
3674        >(
3675            this: *mut core::ffi::c_void,
3676            errorcode: windows_core::HRESULT,
3677            result: windows_core::PCWSTR,
3678        ) -> windows_core::HRESULT {
3679            unsafe {
3680                let this: &Identity =
3681                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3682                ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Impl::Invoke(
3683                    this,
3684                    core::mem::transmute_copy(&errorcode),
3685                    core::mem::transmute(&result),
3686                )
3687                .into()
3688            }
3689        }
3690        Self {
3691            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3692            Invoke: Invoke::<Identity, OFFSET>,
3693        }
3694    }
3695    pub fn matches(iid: &windows_core::GUID) -> bool {
3696        iid == & < ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler as windows_core::Interface >::IID
3697    }
3698}
3699impl windows_core::RuntimeName
3700    for ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler
3701{
3702}
3703windows_core::imp::define_interface!(
3704    ICoreWebView2BasicAuthenticationRequestedEventArgs,
3705    ICoreWebView2BasicAuthenticationRequestedEventArgs_Vtbl,
3706    0xef05516f_d897_4f9e_b672_d8e2307a3fb0
3707);
3708windows_core::imp::interface_hierarchy!(
3709    ICoreWebView2BasicAuthenticationRequestedEventArgs,
3710    windows_core::IUnknown
3711);
3712impl ICoreWebView2BasicAuthenticationRequestedEventArgs {
3713    pub unsafe fn Uri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
3714        unsafe {
3715            (windows_core::Interface::vtable(self).Uri)(
3716                windows_core::Interface::as_raw(self),
3717                value as _,
3718            )
3719            .ok()
3720        }
3721    }
3722    pub unsafe fn Challenge(
3723        &self,
3724        challenge: *mut windows_core::PWSTR,
3725    ) -> windows_core::Result<()> {
3726        unsafe {
3727            (windows_core::Interface::vtable(self).Challenge)(
3728                windows_core::Interface::as_raw(self),
3729                challenge as _,
3730            )
3731            .ok()
3732        }
3733    }
3734    pub unsafe fn Response(
3735        &self,
3736    ) -> windows_core::Result<ICoreWebView2BasicAuthenticationResponse> {
3737        unsafe {
3738            let mut result__ = core::mem::zeroed();
3739            (windows_core::Interface::vtable(self).Response)(
3740                windows_core::Interface::as_raw(self),
3741                &mut result__,
3742            )
3743            .and_then(|| windows_core::Type::from_abi(result__))
3744        }
3745    }
3746    pub unsafe fn Cancel(&self, cancel: *mut windows_core::BOOL) -> windows_core::Result<()> {
3747        unsafe {
3748            (windows_core::Interface::vtable(self).Cancel)(
3749                windows_core::Interface::as_raw(self),
3750                cancel as _,
3751            )
3752            .ok()
3753        }
3754    }
3755    pub unsafe fn SetCancel(&self, cancel: bool) -> windows_core::Result<()> {
3756        unsafe {
3757            (windows_core::Interface::vtable(self).SetCancel)(
3758                windows_core::Interface::as_raw(self),
3759                cancel.into(),
3760            )
3761            .ok()
3762        }
3763    }
3764    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
3765        unsafe {
3766            let mut result__ = core::mem::zeroed();
3767            (windows_core::Interface::vtable(self).GetDeferral)(
3768                windows_core::Interface::as_raw(self),
3769                &mut result__,
3770            )
3771            .and_then(|| windows_core::Type::from_abi(result__))
3772        }
3773    }
3774}
3775#[repr(C)]
3776#[doc(hidden)]
3777pub struct ICoreWebView2BasicAuthenticationRequestedEventArgs_Vtbl {
3778    pub base__: windows_core::IUnknown_Vtbl,
3779    pub Uri: unsafe extern "system" fn(
3780        *mut core::ffi::c_void,
3781        *mut windows_core::PWSTR,
3782    ) -> windows_core::HRESULT,
3783    pub Challenge: unsafe extern "system" fn(
3784        *mut core::ffi::c_void,
3785        *mut windows_core::PWSTR,
3786    ) -> windows_core::HRESULT,
3787    pub Response: unsafe extern "system" fn(
3788        *mut core::ffi::c_void,
3789        *mut *mut core::ffi::c_void,
3790    ) -> windows_core::HRESULT,
3791    pub Cancel: unsafe extern "system" fn(
3792        *mut core::ffi::c_void,
3793        *mut windows_core::BOOL,
3794    ) -> windows_core::HRESULT,
3795    pub SetCancel: unsafe extern "system" fn(
3796        *mut core::ffi::c_void,
3797        windows_core::BOOL,
3798    ) -> windows_core::HRESULT,
3799    pub GetDeferral: unsafe extern "system" fn(
3800        *mut core::ffi::c_void,
3801        *mut *mut core::ffi::c_void,
3802    ) -> windows_core::HRESULT,
3803}
3804pub trait ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl:
3805    windows_core::IUnknownImpl
3806{
3807    fn Uri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
3808    fn Challenge(&self, challenge: *mut windows_core::PWSTR) -> windows_core::Result<()>;
3809    fn Response(&self) -> windows_core::Result<ICoreWebView2BasicAuthenticationResponse>;
3810    fn Cancel(&self, cancel: *mut windows_core::BOOL) -> windows_core::Result<()>;
3811    fn SetCancel(&self, cancel: windows_core::BOOL) -> windows_core::Result<()>;
3812    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
3813}
3814impl ICoreWebView2BasicAuthenticationRequestedEventArgs_Vtbl {
3815    pub const fn new<
3816        Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3817        const OFFSET: isize,
3818    >() -> Self {
3819        unsafe extern "system" fn Uri<
3820            Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3821            const OFFSET: isize,
3822        >(
3823            this: *mut core::ffi::c_void,
3824            value: *mut windows_core::PWSTR,
3825        ) -> windows_core::HRESULT {
3826            unsafe {
3827                let this: &Identity =
3828                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3829                ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl::Uri(
3830                    this,
3831                    core::mem::transmute_copy(&value),
3832                )
3833                .into()
3834            }
3835        }
3836        unsafe extern "system" fn Challenge<
3837            Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3838            const OFFSET: isize,
3839        >(
3840            this: *mut core::ffi::c_void,
3841            challenge: *mut windows_core::PWSTR,
3842        ) -> windows_core::HRESULT {
3843            unsafe {
3844                let this: &Identity =
3845                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3846                ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl::Challenge(
3847                    this,
3848                    core::mem::transmute_copy(&challenge),
3849                )
3850                .into()
3851            }
3852        }
3853        unsafe extern "system" fn Response<
3854            Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3855            const OFFSET: isize,
3856        >(
3857            this: *mut core::ffi::c_void,
3858            response: *mut *mut core::ffi::c_void,
3859        ) -> windows_core::HRESULT {
3860            unsafe {
3861                let this: &Identity =
3862                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3863                match ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl::Response(this) {
3864                    Ok(ok__) => {
3865                        response.write(core::mem::transmute(ok__));
3866                        windows_core::HRESULT(0)
3867                    }
3868                    Err(err) => err.into(),
3869                }
3870            }
3871        }
3872        unsafe extern "system" fn Cancel<
3873            Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3874            const OFFSET: isize,
3875        >(
3876            this: *mut core::ffi::c_void,
3877            cancel: *mut windows_core::BOOL,
3878        ) -> windows_core::HRESULT {
3879            unsafe {
3880                let this: &Identity =
3881                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3882                ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl::Cancel(
3883                    this,
3884                    core::mem::transmute_copy(&cancel),
3885                )
3886                .into()
3887            }
3888        }
3889        unsafe extern "system" fn SetCancel<
3890            Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3891            const OFFSET: isize,
3892        >(
3893            this: *mut core::ffi::c_void,
3894            cancel: windows_core::BOOL,
3895        ) -> windows_core::HRESULT {
3896            unsafe {
3897                let this: &Identity =
3898                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3899                ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl::SetCancel(
3900                    this,
3901                    core::mem::transmute_copy(&cancel),
3902                )
3903                .into()
3904            }
3905        }
3906        unsafe extern "system" fn GetDeferral<
3907            Identity: ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl,
3908            const OFFSET: isize,
3909        >(
3910            this: *mut core::ffi::c_void,
3911            deferral: *mut *mut core::ffi::c_void,
3912        ) -> windows_core::HRESULT {
3913            unsafe {
3914                let this: &Identity =
3915                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3916                match ICoreWebView2BasicAuthenticationRequestedEventArgs_Impl::GetDeferral(this) {
3917                    Ok(ok__) => {
3918                        deferral.write(core::mem::transmute(ok__));
3919                        windows_core::HRESULT(0)
3920                    }
3921                    Err(err) => err.into(),
3922                }
3923            }
3924        }
3925        Self {
3926            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3927            Uri: Uri::<Identity, OFFSET>,
3928            Challenge: Challenge::<Identity, OFFSET>,
3929            Response: Response::<Identity, OFFSET>,
3930            Cancel: Cancel::<Identity, OFFSET>,
3931            SetCancel: SetCancel::<Identity, OFFSET>,
3932            GetDeferral: GetDeferral::<Identity, OFFSET>,
3933        }
3934    }
3935    pub fn matches(iid: &windows_core::GUID) -> bool {
3936        iid == &<ICoreWebView2BasicAuthenticationRequestedEventArgs as windows_core::Interface>::IID
3937    }
3938}
3939impl windows_core::RuntimeName for ICoreWebView2BasicAuthenticationRequestedEventArgs {}
3940windows_core::imp::define_interface!(
3941    ICoreWebView2BasicAuthenticationRequestedEventHandler,
3942    ICoreWebView2BasicAuthenticationRequestedEventHandler_Vtbl,
3943    0x58b4d6c2_18d4_497e_b39b_9a96533fa278
3944);
3945windows_core::imp::interface_hierarchy!(
3946    ICoreWebView2BasicAuthenticationRequestedEventHandler,
3947    windows_core::IUnknown
3948);
3949impl ICoreWebView2BasicAuthenticationRequestedEventHandler {
3950    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
3951    where
3952        P0: windows_core::Param<ICoreWebView2>,
3953        P1: windows_core::Param<ICoreWebView2BasicAuthenticationRequestedEventArgs>,
3954    {
3955        unsafe {
3956            (windows_core::Interface::vtable(self).Invoke)(
3957                windows_core::Interface::as_raw(self),
3958                sender.param().abi(),
3959                args.param().abi(),
3960            )
3961            .ok()
3962        }
3963    }
3964}
3965#[repr(C)]
3966#[doc(hidden)]
3967pub struct ICoreWebView2BasicAuthenticationRequestedEventHandler_Vtbl {
3968    pub base__: windows_core::IUnknown_Vtbl,
3969    pub Invoke: unsafe extern "system" fn(
3970        *mut core::ffi::c_void,
3971        *mut core::ffi::c_void,
3972        *mut core::ffi::c_void,
3973    ) -> windows_core::HRESULT,
3974}
3975pub trait ICoreWebView2BasicAuthenticationRequestedEventHandler_Impl:
3976    windows_core::IUnknownImpl
3977{
3978    fn Invoke(
3979        &self,
3980        sender: windows_core::Ref<'_, ICoreWebView2>,
3981        args: windows_core::Ref<'_, ICoreWebView2BasicAuthenticationRequestedEventArgs>,
3982    ) -> windows_core::Result<()>;
3983}
3984impl ICoreWebView2BasicAuthenticationRequestedEventHandler_Vtbl {
3985    pub const fn new<
3986        Identity: ICoreWebView2BasicAuthenticationRequestedEventHandler_Impl,
3987        const OFFSET: isize,
3988    >() -> Self {
3989        unsafe extern "system" fn Invoke<
3990            Identity: ICoreWebView2BasicAuthenticationRequestedEventHandler_Impl,
3991            const OFFSET: isize,
3992        >(
3993            this: *mut core::ffi::c_void,
3994            sender: *mut core::ffi::c_void,
3995            args: *mut core::ffi::c_void,
3996        ) -> windows_core::HRESULT {
3997            unsafe {
3998                let this: &Identity =
3999                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4000                ICoreWebView2BasicAuthenticationRequestedEventHandler_Impl::Invoke(
4001                    this,
4002                    core::mem::transmute_copy(&sender),
4003                    core::mem::transmute_copy(&args),
4004                )
4005                .into()
4006            }
4007        }
4008        Self {
4009            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4010            Invoke: Invoke::<Identity, OFFSET>,
4011        }
4012    }
4013    pub fn matches(iid: &windows_core::GUID) -> bool {
4014        iid == & < ICoreWebView2BasicAuthenticationRequestedEventHandler as windows_core::Interface >::IID
4015    }
4016}
4017impl windows_core::RuntimeName for ICoreWebView2BasicAuthenticationRequestedEventHandler {}
4018windows_core::imp::define_interface!(
4019    ICoreWebView2BasicAuthenticationResponse,
4020    ICoreWebView2BasicAuthenticationResponse_Vtbl,
4021    0x07023f7d_2d77_4d67_9040_6e7d428c6a40
4022);
4023windows_core::imp::interface_hierarchy!(
4024    ICoreWebView2BasicAuthenticationResponse,
4025    windows_core::IUnknown
4026);
4027impl ICoreWebView2BasicAuthenticationResponse {
4028    pub unsafe fn UserName(&self, username: *mut windows_core::PWSTR) -> windows_core::Result<()> {
4029        unsafe {
4030            (windows_core::Interface::vtable(self).UserName)(
4031                windows_core::Interface::as_raw(self),
4032                username as _,
4033            )
4034            .ok()
4035        }
4036    }
4037    pub unsafe fn SetUserName<P0>(&self, username: P0) -> windows_core::Result<()>
4038    where
4039        P0: windows_core::Param<windows_core::PCWSTR>,
4040    {
4041        unsafe {
4042            (windows_core::Interface::vtable(self).SetUserName)(
4043                windows_core::Interface::as_raw(self),
4044                username.param().abi(),
4045            )
4046            .ok()
4047        }
4048    }
4049    pub unsafe fn Password(&self, password: *mut windows_core::PWSTR) -> windows_core::Result<()> {
4050        unsafe {
4051            (windows_core::Interface::vtable(self).Password)(
4052                windows_core::Interface::as_raw(self),
4053                password as _,
4054            )
4055            .ok()
4056        }
4057    }
4058    pub unsafe fn SetPassword<P0>(&self, password: P0) -> windows_core::Result<()>
4059    where
4060        P0: windows_core::Param<windows_core::PCWSTR>,
4061    {
4062        unsafe {
4063            (windows_core::Interface::vtable(self).SetPassword)(
4064                windows_core::Interface::as_raw(self),
4065                password.param().abi(),
4066            )
4067            .ok()
4068        }
4069    }
4070}
4071#[repr(C)]
4072#[doc(hidden)]
4073pub struct ICoreWebView2BasicAuthenticationResponse_Vtbl {
4074    pub base__: windows_core::IUnknown_Vtbl,
4075    pub UserName: unsafe extern "system" fn(
4076        *mut core::ffi::c_void,
4077        *mut windows_core::PWSTR,
4078    ) -> windows_core::HRESULT,
4079    pub SetUserName: unsafe extern "system" fn(
4080        *mut core::ffi::c_void,
4081        windows_core::PCWSTR,
4082    ) -> windows_core::HRESULT,
4083    pub Password: unsafe extern "system" fn(
4084        *mut core::ffi::c_void,
4085        *mut windows_core::PWSTR,
4086    ) -> windows_core::HRESULT,
4087    pub SetPassword: unsafe extern "system" fn(
4088        *mut core::ffi::c_void,
4089        windows_core::PCWSTR,
4090    ) -> windows_core::HRESULT,
4091}
4092pub trait ICoreWebView2BasicAuthenticationResponse_Impl: windows_core::IUnknownImpl {
4093    fn UserName(&self, username: *mut windows_core::PWSTR) -> windows_core::Result<()>;
4094    fn SetUserName(&self, username: &windows_core::PCWSTR) -> windows_core::Result<()>;
4095    fn Password(&self, password: *mut windows_core::PWSTR) -> windows_core::Result<()>;
4096    fn SetPassword(&self, password: &windows_core::PCWSTR) -> windows_core::Result<()>;
4097}
4098impl ICoreWebView2BasicAuthenticationResponse_Vtbl {
4099    pub const fn new<
4100        Identity: ICoreWebView2BasicAuthenticationResponse_Impl,
4101        const OFFSET: isize,
4102    >() -> Self {
4103        unsafe extern "system" fn UserName<
4104            Identity: ICoreWebView2BasicAuthenticationResponse_Impl,
4105            const OFFSET: isize,
4106        >(
4107            this: *mut core::ffi::c_void,
4108            username: *mut windows_core::PWSTR,
4109        ) -> windows_core::HRESULT {
4110            unsafe {
4111                let this: &Identity =
4112                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4113                ICoreWebView2BasicAuthenticationResponse_Impl::UserName(
4114                    this,
4115                    core::mem::transmute_copy(&username),
4116                )
4117                .into()
4118            }
4119        }
4120        unsafe extern "system" fn SetUserName<
4121            Identity: ICoreWebView2BasicAuthenticationResponse_Impl,
4122            const OFFSET: isize,
4123        >(
4124            this: *mut core::ffi::c_void,
4125            username: windows_core::PCWSTR,
4126        ) -> windows_core::HRESULT {
4127            unsafe {
4128                let this: &Identity =
4129                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4130                ICoreWebView2BasicAuthenticationResponse_Impl::SetUserName(
4131                    this,
4132                    core::mem::transmute(&username),
4133                )
4134                .into()
4135            }
4136        }
4137        unsafe extern "system" fn Password<
4138            Identity: ICoreWebView2BasicAuthenticationResponse_Impl,
4139            const OFFSET: isize,
4140        >(
4141            this: *mut core::ffi::c_void,
4142            password: *mut windows_core::PWSTR,
4143        ) -> windows_core::HRESULT {
4144            unsafe {
4145                let this: &Identity =
4146                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4147                ICoreWebView2BasicAuthenticationResponse_Impl::Password(
4148                    this,
4149                    core::mem::transmute_copy(&password),
4150                )
4151                .into()
4152            }
4153        }
4154        unsafe extern "system" fn SetPassword<
4155            Identity: ICoreWebView2BasicAuthenticationResponse_Impl,
4156            const OFFSET: isize,
4157        >(
4158            this: *mut core::ffi::c_void,
4159            password: windows_core::PCWSTR,
4160        ) -> windows_core::HRESULT {
4161            unsafe {
4162                let this: &Identity =
4163                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4164                ICoreWebView2BasicAuthenticationResponse_Impl::SetPassword(
4165                    this,
4166                    core::mem::transmute(&password),
4167                )
4168                .into()
4169            }
4170        }
4171        Self {
4172            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4173            UserName: UserName::<Identity, OFFSET>,
4174            SetUserName: SetUserName::<Identity, OFFSET>,
4175            Password: Password::<Identity, OFFSET>,
4176            SetPassword: SetPassword::<Identity, OFFSET>,
4177        }
4178    }
4179    pub fn matches(iid: &windows_core::GUID) -> bool {
4180        iid == &<ICoreWebView2BasicAuthenticationResponse as windows_core::Interface>::IID
4181    }
4182}
4183impl windows_core::RuntimeName for ICoreWebView2BasicAuthenticationResponse {}
4184windows_core::imp::define_interface!(
4185    ICoreWebView2BrowserExtension,
4186    ICoreWebView2BrowserExtension_Vtbl,
4187    0x7ef7ffa0_fac5_462c_b189_3d9edbe575da
4188);
4189windows_core::imp::interface_hierarchy!(ICoreWebView2BrowserExtension, windows_core::IUnknown);
4190impl ICoreWebView2BrowserExtension {
4191    pub unsafe fn Id(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
4192        unsafe {
4193            (windows_core::Interface::vtable(self).Id)(
4194                windows_core::Interface::as_raw(self),
4195                value as _,
4196            )
4197            .ok()
4198        }
4199    }
4200    pub unsafe fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
4201        unsafe {
4202            (windows_core::Interface::vtable(self).Name)(
4203                windows_core::Interface::as_raw(self),
4204                value as _,
4205            )
4206            .ok()
4207        }
4208    }
4209    pub unsafe fn Remove<P0>(&self, handler: P0) -> windows_core::Result<()>
4210    where
4211        P0: windows_core::Param<ICoreWebView2BrowserExtensionRemoveCompletedHandler>,
4212    {
4213        unsafe {
4214            (windows_core::Interface::vtable(self).Remove)(
4215                windows_core::Interface::as_raw(self),
4216                handler.param().abi(),
4217            )
4218            .ok()
4219        }
4220    }
4221    pub unsafe fn IsEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
4222        unsafe {
4223            (windows_core::Interface::vtable(self).IsEnabled)(
4224                windows_core::Interface::as_raw(self),
4225                value as _,
4226            )
4227            .ok()
4228        }
4229    }
4230    pub unsafe fn Enable<P1>(&self, isenabled: bool, handler: P1) -> windows_core::Result<()>
4231    where
4232        P1: windows_core::Param<ICoreWebView2BrowserExtensionEnableCompletedHandler>,
4233    {
4234        unsafe {
4235            (windows_core::Interface::vtable(self).Enable)(
4236                windows_core::Interface::as_raw(self),
4237                isenabled.into(),
4238                handler.param().abi(),
4239            )
4240            .ok()
4241        }
4242    }
4243}
4244#[repr(C)]
4245#[doc(hidden)]
4246pub struct ICoreWebView2BrowserExtension_Vtbl {
4247    pub base__: windows_core::IUnknown_Vtbl,
4248    pub Id: unsafe extern "system" fn(
4249        *mut core::ffi::c_void,
4250        *mut windows_core::PWSTR,
4251    ) -> windows_core::HRESULT,
4252    pub Name: unsafe extern "system" fn(
4253        *mut core::ffi::c_void,
4254        *mut windows_core::PWSTR,
4255    ) -> windows_core::HRESULT,
4256    pub Remove: unsafe extern "system" fn(
4257        *mut core::ffi::c_void,
4258        *mut core::ffi::c_void,
4259    ) -> windows_core::HRESULT,
4260    pub IsEnabled: unsafe extern "system" fn(
4261        *mut core::ffi::c_void,
4262        *mut windows_core::BOOL,
4263    ) -> windows_core::HRESULT,
4264    pub Enable: unsafe extern "system" fn(
4265        *mut core::ffi::c_void,
4266        windows_core::BOOL,
4267        *mut core::ffi::c_void,
4268    ) -> windows_core::HRESULT,
4269}
4270pub trait ICoreWebView2BrowserExtension_Impl: windows_core::IUnknownImpl {
4271    fn Id(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
4272    fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
4273    fn Remove(
4274        &self,
4275        handler: windows_core::Ref<'_, ICoreWebView2BrowserExtensionRemoveCompletedHandler>,
4276    ) -> windows_core::Result<()>;
4277    fn IsEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
4278    fn Enable(
4279        &self,
4280        isenabled: windows_core::BOOL,
4281        handler: windows_core::Ref<'_, ICoreWebView2BrowserExtensionEnableCompletedHandler>,
4282    ) -> windows_core::Result<()>;
4283}
4284impl ICoreWebView2BrowserExtension_Vtbl {
4285    pub const fn new<Identity: ICoreWebView2BrowserExtension_Impl, const OFFSET: isize>() -> Self {
4286        unsafe extern "system" fn Id<
4287            Identity: ICoreWebView2BrowserExtension_Impl,
4288            const OFFSET: isize,
4289        >(
4290            this: *mut core::ffi::c_void,
4291            value: *mut windows_core::PWSTR,
4292        ) -> windows_core::HRESULT {
4293            unsafe {
4294                let this: &Identity =
4295                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4296                ICoreWebView2BrowserExtension_Impl::Id(this, core::mem::transmute_copy(&value))
4297                    .into()
4298            }
4299        }
4300        unsafe extern "system" fn Name<
4301            Identity: ICoreWebView2BrowserExtension_Impl,
4302            const OFFSET: isize,
4303        >(
4304            this: *mut core::ffi::c_void,
4305            value: *mut windows_core::PWSTR,
4306        ) -> windows_core::HRESULT {
4307            unsafe {
4308                let this: &Identity =
4309                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4310                ICoreWebView2BrowserExtension_Impl::Name(this, core::mem::transmute_copy(&value))
4311                    .into()
4312            }
4313        }
4314        unsafe extern "system" fn Remove<
4315            Identity: ICoreWebView2BrowserExtension_Impl,
4316            const OFFSET: isize,
4317        >(
4318            this: *mut core::ffi::c_void,
4319            handler: *mut core::ffi::c_void,
4320        ) -> windows_core::HRESULT {
4321            unsafe {
4322                let this: &Identity =
4323                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4324                ICoreWebView2BrowserExtension_Impl::Remove(
4325                    this,
4326                    core::mem::transmute_copy(&handler),
4327                )
4328                .into()
4329            }
4330        }
4331        unsafe extern "system" fn IsEnabled<
4332            Identity: ICoreWebView2BrowserExtension_Impl,
4333            const OFFSET: isize,
4334        >(
4335            this: *mut core::ffi::c_void,
4336            value: *mut windows_core::BOOL,
4337        ) -> windows_core::HRESULT {
4338            unsafe {
4339                let this: &Identity =
4340                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4341                ICoreWebView2BrowserExtension_Impl::IsEnabled(
4342                    this,
4343                    core::mem::transmute_copy(&value),
4344                )
4345                .into()
4346            }
4347        }
4348        unsafe extern "system" fn Enable<
4349            Identity: ICoreWebView2BrowserExtension_Impl,
4350            const OFFSET: isize,
4351        >(
4352            this: *mut core::ffi::c_void,
4353            isenabled: windows_core::BOOL,
4354            handler: *mut core::ffi::c_void,
4355        ) -> windows_core::HRESULT {
4356            unsafe {
4357                let this: &Identity =
4358                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4359                ICoreWebView2BrowserExtension_Impl::Enable(
4360                    this,
4361                    core::mem::transmute_copy(&isenabled),
4362                    core::mem::transmute_copy(&handler),
4363                )
4364                .into()
4365            }
4366        }
4367        Self {
4368            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4369            Id: Id::<Identity, OFFSET>,
4370            Name: Name::<Identity, OFFSET>,
4371            Remove: Remove::<Identity, OFFSET>,
4372            IsEnabled: IsEnabled::<Identity, OFFSET>,
4373            Enable: Enable::<Identity, OFFSET>,
4374        }
4375    }
4376    pub fn matches(iid: &windows_core::GUID) -> bool {
4377        iid == &<ICoreWebView2BrowserExtension as windows_core::Interface>::IID
4378    }
4379}
4380impl windows_core::RuntimeName for ICoreWebView2BrowserExtension {}
4381windows_core::imp::define_interface!(
4382    ICoreWebView2BrowserExtensionEnableCompletedHandler,
4383    ICoreWebView2BrowserExtensionEnableCompletedHandler_Vtbl,
4384    0x30c186ce_7fad_421f_a3bc_a8eaf071ddb8
4385);
4386windows_core::imp::interface_hierarchy!(
4387    ICoreWebView2BrowserExtensionEnableCompletedHandler,
4388    windows_core::IUnknown
4389);
4390impl ICoreWebView2BrowserExtensionEnableCompletedHandler {
4391    pub unsafe fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()> {
4392        unsafe {
4393            (windows_core::Interface::vtable(self).Invoke)(
4394                windows_core::Interface::as_raw(self),
4395                errorcode,
4396            )
4397            .ok()
4398        }
4399    }
4400}
4401#[repr(C)]
4402#[doc(hidden)]
4403pub struct ICoreWebView2BrowserExtensionEnableCompletedHandler_Vtbl {
4404    pub base__: windows_core::IUnknown_Vtbl,
4405    pub Invoke: unsafe extern "system" fn(
4406        *mut core::ffi::c_void,
4407        windows_core::HRESULT,
4408    ) -> windows_core::HRESULT,
4409}
4410pub trait ICoreWebView2BrowserExtensionEnableCompletedHandler_Impl:
4411    windows_core::IUnknownImpl
4412{
4413    fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()>;
4414}
4415impl ICoreWebView2BrowserExtensionEnableCompletedHandler_Vtbl {
4416    pub const fn new<
4417        Identity: ICoreWebView2BrowserExtensionEnableCompletedHandler_Impl,
4418        const OFFSET: isize,
4419    >() -> Self {
4420        unsafe extern "system" fn Invoke<
4421            Identity: ICoreWebView2BrowserExtensionEnableCompletedHandler_Impl,
4422            const OFFSET: isize,
4423        >(
4424            this: *mut core::ffi::c_void,
4425            errorcode: windows_core::HRESULT,
4426        ) -> windows_core::HRESULT {
4427            unsafe {
4428                let this: &Identity =
4429                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4430                ICoreWebView2BrowserExtensionEnableCompletedHandler_Impl::Invoke(
4431                    this,
4432                    core::mem::transmute_copy(&errorcode),
4433                )
4434                .into()
4435            }
4436        }
4437        Self {
4438            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4439            Invoke: Invoke::<Identity, OFFSET>,
4440        }
4441    }
4442    pub fn matches(iid: &windows_core::GUID) -> bool {
4443        iid == & < ICoreWebView2BrowserExtensionEnableCompletedHandler as windows_core::Interface >::IID
4444    }
4445}
4446impl windows_core::RuntimeName for ICoreWebView2BrowserExtensionEnableCompletedHandler {}
4447windows_core::imp::define_interface!(
4448    ICoreWebView2BrowserExtensionList,
4449    ICoreWebView2BrowserExtensionList_Vtbl,
4450    0x2ef3d2dc_bd5f_4f4d_90af_fd67798f0c2f
4451);
4452windows_core::imp::interface_hierarchy!(ICoreWebView2BrowserExtensionList, windows_core::IUnknown);
4453impl ICoreWebView2BrowserExtensionList {
4454    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
4455        unsafe {
4456            (windows_core::Interface::vtable(self).Count)(
4457                windows_core::Interface::as_raw(self),
4458                value as _,
4459            )
4460            .ok()
4461        }
4462    }
4463    pub unsafe fn GetValueAtIndex(
4464        &self,
4465        index: u32,
4466    ) -> windows_core::Result<ICoreWebView2BrowserExtension> {
4467        unsafe {
4468            let mut result__ = core::mem::zeroed();
4469            (windows_core::Interface::vtable(self).GetValueAtIndex)(
4470                windows_core::Interface::as_raw(self),
4471                index,
4472                &mut result__,
4473            )
4474            .and_then(|| windows_core::Type::from_abi(result__))
4475        }
4476    }
4477}
4478#[repr(C)]
4479#[doc(hidden)]
4480pub struct ICoreWebView2BrowserExtensionList_Vtbl {
4481    pub base__: windows_core::IUnknown_Vtbl,
4482    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
4483    pub GetValueAtIndex: unsafe extern "system" fn(
4484        *mut core::ffi::c_void,
4485        u32,
4486        *mut *mut core::ffi::c_void,
4487    ) -> windows_core::HRESULT,
4488}
4489pub trait ICoreWebView2BrowserExtensionList_Impl: windows_core::IUnknownImpl {
4490    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
4491    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2BrowserExtension>;
4492}
4493impl ICoreWebView2BrowserExtensionList_Vtbl {
4494    pub const fn new<Identity: ICoreWebView2BrowserExtensionList_Impl, const OFFSET: isize>() -> Self
4495    {
4496        unsafe extern "system" fn Count<
4497            Identity: ICoreWebView2BrowserExtensionList_Impl,
4498            const OFFSET: isize,
4499        >(
4500            this: *mut core::ffi::c_void,
4501            value: *mut u32,
4502        ) -> windows_core::HRESULT {
4503            unsafe {
4504                let this: &Identity =
4505                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4506                ICoreWebView2BrowserExtensionList_Impl::Count(
4507                    this,
4508                    core::mem::transmute_copy(&value),
4509                )
4510                .into()
4511            }
4512        }
4513        unsafe extern "system" fn GetValueAtIndex<
4514            Identity: ICoreWebView2BrowserExtensionList_Impl,
4515            const OFFSET: isize,
4516        >(
4517            this: *mut core::ffi::c_void,
4518            index: u32,
4519            value: *mut *mut core::ffi::c_void,
4520        ) -> windows_core::HRESULT {
4521            unsafe {
4522                let this: &Identity =
4523                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4524                match ICoreWebView2BrowserExtensionList_Impl::GetValueAtIndex(
4525                    this,
4526                    core::mem::transmute_copy(&index),
4527                ) {
4528                    Ok(ok__) => {
4529                        value.write(core::mem::transmute(ok__));
4530                        windows_core::HRESULT(0)
4531                    }
4532                    Err(err) => err.into(),
4533                }
4534            }
4535        }
4536        Self {
4537            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4538            Count: Count::<Identity, OFFSET>,
4539            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
4540        }
4541    }
4542    pub fn matches(iid: &windows_core::GUID) -> bool {
4543        iid == &<ICoreWebView2BrowserExtensionList as windows_core::Interface>::IID
4544    }
4545}
4546impl windows_core::RuntimeName for ICoreWebView2BrowserExtensionList {}
4547windows_core::imp::define_interface!(
4548    ICoreWebView2BrowserExtensionRemoveCompletedHandler,
4549    ICoreWebView2BrowserExtensionRemoveCompletedHandler_Vtbl,
4550    0x8e41909a_9b18_4bb1_8cdf_930f467a50be
4551);
4552windows_core::imp::interface_hierarchy!(
4553    ICoreWebView2BrowserExtensionRemoveCompletedHandler,
4554    windows_core::IUnknown
4555);
4556impl ICoreWebView2BrowserExtensionRemoveCompletedHandler {
4557    pub unsafe fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()> {
4558        unsafe {
4559            (windows_core::Interface::vtable(self).Invoke)(
4560                windows_core::Interface::as_raw(self),
4561                errorcode,
4562            )
4563            .ok()
4564        }
4565    }
4566}
4567#[repr(C)]
4568#[doc(hidden)]
4569pub struct ICoreWebView2BrowserExtensionRemoveCompletedHandler_Vtbl {
4570    pub base__: windows_core::IUnknown_Vtbl,
4571    pub Invoke: unsafe extern "system" fn(
4572        *mut core::ffi::c_void,
4573        windows_core::HRESULT,
4574    ) -> windows_core::HRESULT,
4575}
4576pub trait ICoreWebView2BrowserExtensionRemoveCompletedHandler_Impl:
4577    windows_core::IUnknownImpl
4578{
4579    fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()>;
4580}
4581impl ICoreWebView2BrowserExtensionRemoveCompletedHandler_Vtbl {
4582    pub const fn new<
4583        Identity: ICoreWebView2BrowserExtensionRemoveCompletedHandler_Impl,
4584        const OFFSET: isize,
4585    >() -> Self {
4586        unsafe extern "system" fn Invoke<
4587            Identity: ICoreWebView2BrowserExtensionRemoveCompletedHandler_Impl,
4588            const OFFSET: isize,
4589        >(
4590            this: *mut core::ffi::c_void,
4591            errorcode: windows_core::HRESULT,
4592        ) -> windows_core::HRESULT {
4593            unsafe {
4594                let this: &Identity =
4595                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4596                ICoreWebView2BrowserExtensionRemoveCompletedHandler_Impl::Invoke(
4597                    this,
4598                    core::mem::transmute_copy(&errorcode),
4599                )
4600                .into()
4601            }
4602        }
4603        Self {
4604            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4605            Invoke: Invoke::<Identity, OFFSET>,
4606        }
4607    }
4608    pub fn matches(iid: &windows_core::GUID) -> bool {
4609        iid == & < ICoreWebView2BrowserExtensionRemoveCompletedHandler as windows_core::Interface >::IID
4610    }
4611}
4612impl windows_core::RuntimeName for ICoreWebView2BrowserExtensionRemoveCompletedHandler {}
4613windows_core::imp::define_interface!(
4614    ICoreWebView2BrowserProcessExitedEventArgs,
4615    ICoreWebView2BrowserProcessExitedEventArgs_Vtbl,
4616    0x1f00663f_af8c_4782_9cdd_dd01c52e34cb
4617);
4618windows_core::imp::interface_hierarchy!(
4619    ICoreWebView2BrowserProcessExitedEventArgs,
4620    windows_core::IUnknown
4621);
4622impl ICoreWebView2BrowserProcessExitedEventArgs {
4623    pub unsafe fn BrowserProcessExitKind(
4624        &self,
4625        value: *mut COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND,
4626    ) -> windows_core::Result<()> {
4627        unsafe {
4628            (windows_core::Interface::vtable(self).BrowserProcessExitKind)(
4629                windows_core::Interface::as_raw(self),
4630                value as _,
4631            )
4632            .ok()
4633        }
4634    }
4635    pub unsafe fn BrowserProcessId(&self, value: *mut u32) -> windows_core::Result<()> {
4636        unsafe {
4637            (windows_core::Interface::vtable(self).BrowserProcessId)(
4638                windows_core::Interface::as_raw(self),
4639                value as _,
4640            )
4641            .ok()
4642        }
4643    }
4644}
4645#[repr(C)]
4646#[doc(hidden)]
4647pub struct ICoreWebView2BrowserProcessExitedEventArgs_Vtbl {
4648    pub base__: windows_core::IUnknown_Vtbl,
4649    pub BrowserProcessExitKind: unsafe extern "system" fn(
4650        *mut core::ffi::c_void,
4651        *mut COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND,
4652    ) -> windows_core::HRESULT,
4653    pub BrowserProcessId:
4654        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
4655}
4656pub trait ICoreWebView2BrowserProcessExitedEventArgs_Impl: windows_core::IUnknownImpl {
4657    fn BrowserProcessExitKind(
4658        &self,
4659        value: *mut COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND,
4660    ) -> windows_core::Result<()>;
4661    fn BrowserProcessId(&self, value: *mut u32) -> windows_core::Result<()>;
4662}
4663impl ICoreWebView2BrowserProcessExitedEventArgs_Vtbl {
4664    pub const fn new<
4665        Identity: ICoreWebView2BrowserProcessExitedEventArgs_Impl,
4666        const OFFSET: isize,
4667    >() -> Self {
4668        unsafe extern "system" fn BrowserProcessExitKind<
4669            Identity: ICoreWebView2BrowserProcessExitedEventArgs_Impl,
4670            const OFFSET: isize,
4671        >(
4672            this: *mut core::ffi::c_void,
4673            value: *mut COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND,
4674        ) -> windows_core::HRESULT {
4675            unsafe {
4676                let this: &Identity =
4677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4678                ICoreWebView2BrowserProcessExitedEventArgs_Impl::BrowserProcessExitKind(
4679                    this,
4680                    core::mem::transmute_copy(&value),
4681                )
4682                .into()
4683            }
4684        }
4685        unsafe extern "system" fn BrowserProcessId<
4686            Identity: ICoreWebView2BrowserProcessExitedEventArgs_Impl,
4687            const OFFSET: isize,
4688        >(
4689            this: *mut core::ffi::c_void,
4690            value: *mut u32,
4691        ) -> windows_core::HRESULT {
4692            unsafe {
4693                let this: &Identity =
4694                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4695                ICoreWebView2BrowserProcessExitedEventArgs_Impl::BrowserProcessId(
4696                    this,
4697                    core::mem::transmute_copy(&value),
4698                )
4699                .into()
4700            }
4701        }
4702        Self {
4703            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4704            BrowserProcessExitKind: BrowserProcessExitKind::<Identity, OFFSET>,
4705            BrowserProcessId: BrowserProcessId::<Identity, OFFSET>,
4706        }
4707    }
4708    pub fn matches(iid: &windows_core::GUID) -> bool {
4709        iid == &<ICoreWebView2BrowserProcessExitedEventArgs as windows_core::Interface>::IID
4710    }
4711}
4712impl windows_core::RuntimeName for ICoreWebView2BrowserProcessExitedEventArgs {}
4713windows_core::imp::define_interface!(
4714    ICoreWebView2BrowserProcessExitedEventHandler,
4715    ICoreWebView2BrowserProcessExitedEventHandler_Vtbl,
4716    0xfa504257_a216_4911_a860_fe8825712861
4717);
4718windows_core::imp::interface_hierarchy!(
4719    ICoreWebView2BrowserProcessExitedEventHandler,
4720    windows_core::IUnknown
4721);
4722impl ICoreWebView2BrowserProcessExitedEventHandler {
4723    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
4724    where
4725        P0: windows_core::Param<ICoreWebView2Environment>,
4726        P1: windows_core::Param<ICoreWebView2BrowserProcessExitedEventArgs>,
4727    {
4728        unsafe {
4729            (windows_core::Interface::vtable(self).Invoke)(
4730                windows_core::Interface::as_raw(self),
4731                sender.param().abi(),
4732                args.param().abi(),
4733            )
4734            .ok()
4735        }
4736    }
4737}
4738#[repr(C)]
4739#[doc(hidden)]
4740pub struct ICoreWebView2BrowserProcessExitedEventHandler_Vtbl {
4741    pub base__: windows_core::IUnknown_Vtbl,
4742    pub Invoke: unsafe extern "system" fn(
4743        *mut core::ffi::c_void,
4744        *mut core::ffi::c_void,
4745        *mut core::ffi::c_void,
4746    ) -> windows_core::HRESULT,
4747}
4748pub trait ICoreWebView2BrowserProcessExitedEventHandler_Impl: windows_core::IUnknownImpl {
4749    fn Invoke(
4750        &self,
4751        sender: windows_core::Ref<'_, ICoreWebView2Environment>,
4752        args: windows_core::Ref<'_, ICoreWebView2BrowserProcessExitedEventArgs>,
4753    ) -> windows_core::Result<()>;
4754}
4755impl ICoreWebView2BrowserProcessExitedEventHandler_Vtbl {
4756    pub const fn new<
4757        Identity: ICoreWebView2BrowserProcessExitedEventHandler_Impl,
4758        const OFFSET: isize,
4759    >() -> Self {
4760        unsafe extern "system" fn Invoke<
4761            Identity: ICoreWebView2BrowserProcessExitedEventHandler_Impl,
4762            const OFFSET: isize,
4763        >(
4764            this: *mut core::ffi::c_void,
4765            sender: *mut core::ffi::c_void,
4766            args: *mut core::ffi::c_void,
4767        ) -> windows_core::HRESULT {
4768            unsafe {
4769                let this: &Identity =
4770                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4771                ICoreWebView2BrowserProcessExitedEventHandler_Impl::Invoke(
4772                    this,
4773                    core::mem::transmute_copy(&sender),
4774                    core::mem::transmute_copy(&args),
4775                )
4776                .into()
4777            }
4778        }
4779        Self {
4780            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4781            Invoke: Invoke::<Identity, OFFSET>,
4782        }
4783    }
4784    pub fn matches(iid: &windows_core::GUID) -> bool {
4785        iid == &<ICoreWebView2BrowserProcessExitedEventHandler as windows_core::Interface>::IID
4786    }
4787}
4788impl windows_core::RuntimeName for ICoreWebView2BrowserProcessExitedEventHandler {}
4789windows_core::imp::define_interface!(
4790    ICoreWebView2BytesReceivedChangedEventHandler,
4791    ICoreWebView2BytesReceivedChangedEventHandler_Vtbl,
4792    0x828e8ab6_d94c_4264_9cef_5217170d6251
4793);
4794windows_core::imp::interface_hierarchy!(
4795    ICoreWebView2BytesReceivedChangedEventHandler,
4796    windows_core::IUnknown
4797);
4798impl ICoreWebView2BytesReceivedChangedEventHandler {
4799    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
4800    where
4801        P0: windows_core::Param<ICoreWebView2DownloadOperation>,
4802        P1: windows_core::Param<windows_core::IUnknown>,
4803    {
4804        unsafe {
4805            (windows_core::Interface::vtable(self).Invoke)(
4806                windows_core::Interface::as_raw(self),
4807                sender.param().abi(),
4808                args.param().abi(),
4809            )
4810            .ok()
4811        }
4812    }
4813}
4814#[repr(C)]
4815#[doc(hidden)]
4816pub struct ICoreWebView2BytesReceivedChangedEventHandler_Vtbl {
4817    pub base__: windows_core::IUnknown_Vtbl,
4818    pub Invoke: unsafe extern "system" fn(
4819        *mut core::ffi::c_void,
4820        *mut core::ffi::c_void,
4821        *mut core::ffi::c_void,
4822    ) -> windows_core::HRESULT,
4823}
4824pub trait ICoreWebView2BytesReceivedChangedEventHandler_Impl: windows_core::IUnknownImpl {
4825    fn Invoke(
4826        &self,
4827        sender: windows_core::Ref<'_, ICoreWebView2DownloadOperation>,
4828        args: windows_core::Ref<'_, windows_core::IUnknown>,
4829    ) -> windows_core::Result<()>;
4830}
4831impl ICoreWebView2BytesReceivedChangedEventHandler_Vtbl {
4832    pub const fn new<
4833        Identity: ICoreWebView2BytesReceivedChangedEventHandler_Impl,
4834        const OFFSET: isize,
4835    >() -> Self {
4836        unsafe extern "system" fn Invoke<
4837            Identity: ICoreWebView2BytesReceivedChangedEventHandler_Impl,
4838            const OFFSET: isize,
4839        >(
4840            this: *mut core::ffi::c_void,
4841            sender: *mut core::ffi::c_void,
4842            args: *mut core::ffi::c_void,
4843        ) -> windows_core::HRESULT {
4844            unsafe {
4845                let this: &Identity =
4846                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4847                ICoreWebView2BytesReceivedChangedEventHandler_Impl::Invoke(
4848                    this,
4849                    core::mem::transmute_copy(&sender),
4850                    core::mem::transmute_copy(&args),
4851                )
4852                .into()
4853            }
4854        }
4855        Self {
4856            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4857            Invoke: Invoke::<Identity, OFFSET>,
4858        }
4859    }
4860    pub fn matches(iid: &windows_core::GUID) -> bool {
4861        iid == &<ICoreWebView2BytesReceivedChangedEventHandler as windows_core::Interface>::IID
4862    }
4863}
4864impl windows_core::RuntimeName for ICoreWebView2BytesReceivedChangedEventHandler {}
4865windows_core::imp::define_interface!(
4866    ICoreWebView2CallDevToolsProtocolMethodCompletedHandler,
4867    ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Vtbl,
4868    0x5c4889f0_5ef6_4c5a_952c_d8f1b92d0574
4869);
4870windows_core::imp::interface_hierarchy!(
4871    ICoreWebView2CallDevToolsProtocolMethodCompletedHandler,
4872    windows_core::IUnknown
4873);
4874impl ICoreWebView2CallDevToolsProtocolMethodCompletedHandler {
4875    pub unsafe fn Invoke<P1>(
4876        &self,
4877        errorcode: windows_core::HRESULT,
4878        result: P1,
4879    ) -> windows_core::Result<()>
4880    where
4881        P1: windows_core::Param<windows_core::PCWSTR>,
4882    {
4883        unsafe {
4884            (windows_core::Interface::vtable(self).Invoke)(
4885                windows_core::Interface::as_raw(self),
4886                errorcode,
4887                result.param().abi(),
4888            )
4889            .ok()
4890        }
4891    }
4892}
4893#[repr(C)]
4894#[doc(hidden)]
4895pub struct ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Vtbl {
4896    pub base__: windows_core::IUnknown_Vtbl,
4897    pub Invoke: unsafe extern "system" fn(
4898        *mut core::ffi::c_void,
4899        windows_core::HRESULT,
4900        windows_core::PCWSTR,
4901    ) -> windows_core::HRESULT,
4902}
4903pub trait ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Impl:
4904    windows_core::IUnknownImpl
4905{
4906    fn Invoke(
4907        &self,
4908        errorcode: windows_core::HRESULT,
4909        result: &windows_core::PCWSTR,
4910    ) -> windows_core::Result<()>;
4911}
4912impl ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Vtbl {
4913    pub const fn new<
4914        Identity: ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Impl,
4915        const OFFSET: isize,
4916    >() -> Self {
4917        unsafe extern "system" fn Invoke<
4918            Identity: ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Impl,
4919            const OFFSET: isize,
4920        >(
4921            this: *mut core::ffi::c_void,
4922            errorcode: windows_core::HRESULT,
4923            result: windows_core::PCWSTR,
4924        ) -> windows_core::HRESULT {
4925            unsafe {
4926                let this: &Identity =
4927                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4928                ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Impl::Invoke(
4929                    this,
4930                    core::mem::transmute_copy(&errorcode),
4931                    core::mem::transmute(&result),
4932                )
4933                .into()
4934            }
4935        }
4936        Self {
4937            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
4938            Invoke: Invoke::<Identity, OFFSET>,
4939        }
4940    }
4941    pub fn matches(iid: &windows_core::GUID) -> bool {
4942        iid == & < ICoreWebView2CallDevToolsProtocolMethodCompletedHandler as windows_core::Interface >::IID
4943    }
4944}
4945impl windows_core::RuntimeName for ICoreWebView2CallDevToolsProtocolMethodCompletedHandler {}
4946windows_core::imp::define_interface!(
4947    ICoreWebView2CapturePreviewCompletedHandler,
4948    ICoreWebView2CapturePreviewCompletedHandler_Vtbl,
4949    0x697e05e9_3d8f_45fa_96f4_8ffe1ededaf5
4950);
4951windows_core::imp::interface_hierarchy!(
4952    ICoreWebView2CapturePreviewCompletedHandler,
4953    windows_core::IUnknown
4954);
4955impl ICoreWebView2CapturePreviewCompletedHandler {
4956    pub unsafe fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()> {
4957        unsafe {
4958            (windows_core::Interface::vtable(self).Invoke)(
4959                windows_core::Interface::as_raw(self),
4960                errorcode,
4961            )
4962            .ok()
4963        }
4964    }
4965}
4966#[repr(C)]
4967#[doc(hidden)]
4968pub struct ICoreWebView2CapturePreviewCompletedHandler_Vtbl {
4969    pub base__: windows_core::IUnknown_Vtbl,
4970    pub Invoke: unsafe extern "system" fn(
4971        *mut core::ffi::c_void,
4972        windows_core::HRESULT,
4973    ) -> windows_core::HRESULT,
4974}
4975pub trait ICoreWebView2CapturePreviewCompletedHandler_Impl: windows_core::IUnknownImpl {
4976    fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()>;
4977}
4978impl ICoreWebView2CapturePreviewCompletedHandler_Vtbl {
4979    pub const fn new<
4980        Identity: ICoreWebView2CapturePreviewCompletedHandler_Impl,
4981        const OFFSET: isize,
4982    >() -> Self {
4983        unsafe extern "system" fn Invoke<
4984            Identity: ICoreWebView2CapturePreviewCompletedHandler_Impl,
4985            const OFFSET: isize,
4986        >(
4987            this: *mut core::ffi::c_void,
4988            errorcode: windows_core::HRESULT,
4989        ) -> windows_core::HRESULT {
4990            unsafe {
4991                let this: &Identity =
4992                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4993                ICoreWebView2CapturePreviewCompletedHandler_Impl::Invoke(
4994                    this,
4995                    core::mem::transmute_copy(&errorcode),
4996                )
4997                .into()
4998            }
4999        }
5000        Self {
5001            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5002            Invoke: Invoke::<Identity, OFFSET>,
5003        }
5004    }
5005    pub fn matches(iid: &windows_core::GUID) -> bool {
5006        iid == &<ICoreWebView2CapturePreviewCompletedHandler as windows_core::Interface>::IID
5007    }
5008}
5009impl windows_core::RuntimeName for ICoreWebView2CapturePreviewCompletedHandler {}
5010windows_core::imp::define_interface!(
5011    ICoreWebView2Certificate,
5012    ICoreWebView2Certificate_Vtbl,
5013    0xc5fb2fce_1cac_4aee_9c79_5ed0362eaae0
5014);
5015windows_core::imp::interface_hierarchy!(ICoreWebView2Certificate, windows_core::IUnknown);
5016impl ICoreWebView2Certificate {
5017    pub unsafe fn Subject(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5018        unsafe {
5019            (windows_core::Interface::vtable(self).Subject)(
5020                windows_core::Interface::as_raw(self),
5021                value as _,
5022            )
5023            .ok()
5024        }
5025    }
5026    pub unsafe fn Issuer(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5027        unsafe {
5028            (windows_core::Interface::vtable(self).Issuer)(
5029                windows_core::Interface::as_raw(self),
5030                value as _,
5031            )
5032            .ok()
5033        }
5034    }
5035    pub unsafe fn ValidFrom(&self, value: *mut f64) -> windows_core::Result<()> {
5036        unsafe {
5037            (windows_core::Interface::vtable(self).ValidFrom)(
5038                windows_core::Interface::as_raw(self),
5039                value as _,
5040            )
5041            .ok()
5042        }
5043    }
5044    pub unsafe fn ValidTo(&self, value: *mut f64) -> windows_core::Result<()> {
5045        unsafe {
5046            (windows_core::Interface::vtable(self).ValidTo)(
5047                windows_core::Interface::as_raw(self),
5048                value as _,
5049            )
5050            .ok()
5051        }
5052    }
5053    pub unsafe fn DerEncodedSerialNumber(
5054        &self,
5055        value: *mut windows_core::PWSTR,
5056    ) -> windows_core::Result<()> {
5057        unsafe {
5058            (windows_core::Interface::vtable(self).DerEncodedSerialNumber)(
5059                windows_core::Interface::as_raw(self),
5060                value as _,
5061            )
5062            .ok()
5063        }
5064    }
5065    pub unsafe fn DisplayName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5066        unsafe {
5067            (windows_core::Interface::vtable(self).DisplayName)(
5068                windows_core::Interface::as_raw(self),
5069                value as _,
5070            )
5071            .ok()
5072        }
5073    }
5074    pub unsafe fn ToPemEncoding(
5075        &self,
5076        pemencodeddata: *mut windows_core::PWSTR,
5077    ) -> windows_core::Result<()> {
5078        unsafe {
5079            (windows_core::Interface::vtable(self).ToPemEncoding)(
5080                windows_core::Interface::as_raw(self),
5081                pemencodeddata as _,
5082            )
5083            .ok()
5084        }
5085    }
5086    pub unsafe fn PemEncodedIssuerCertificateChain(
5087        &self,
5088    ) -> windows_core::Result<ICoreWebView2StringCollection> {
5089        unsafe {
5090            let mut result__ = core::mem::zeroed();
5091            (windows_core::Interface::vtable(self).PemEncodedIssuerCertificateChain)(
5092                windows_core::Interface::as_raw(self),
5093                &mut result__,
5094            )
5095            .and_then(|| windows_core::Type::from_abi(result__))
5096        }
5097    }
5098}
5099#[repr(C)]
5100#[doc(hidden)]
5101pub struct ICoreWebView2Certificate_Vtbl {
5102    pub base__: windows_core::IUnknown_Vtbl,
5103    pub Subject: unsafe extern "system" fn(
5104        *mut core::ffi::c_void,
5105        *mut windows_core::PWSTR,
5106    ) -> windows_core::HRESULT,
5107    pub Issuer: unsafe extern "system" fn(
5108        *mut core::ffi::c_void,
5109        *mut windows_core::PWSTR,
5110    ) -> windows_core::HRESULT,
5111    pub ValidFrom:
5112        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
5113    pub ValidTo:
5114        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
5115    pub DerEncodedSerialNumber: unsafe extern "system" fn(
5116        *mut core::ffi::c_void,
5117        *mut windows_core::PWSTR,
5118    ) -> windows_core::HRESULT,
5119    pub DisplayName: unsafe extern "system" fn(
5120        *mut core::ffi::c_void,
5121        *mut windows_core::PWSTR,
5122    ) -> windows_core::HRESULT,
5123    pub ToPemEncoding: unsafe extern "system" fn(
5124        *mut core::ffi::c_void,
5125        *mut windows_core::PWSTR,
5126    ) -> windows_core::HRESULT,
5127    pub PemEncodedIssuerCertificateChain: unsafe extern "system" fn(
5128        *mut core::ffi::c_void,
5129        *mut *mut core::ffi::c_void,
5130    ) -> windows_core::HRESULT,
5131}
5132pub trait ICoreWebView2Certificate_Impl: windows_core::IUnknownImpl {
5133    fn Subject(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5134    fn Issuer(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5135    fn ValidFrom(&self, value: *mut f64) -> windows_core::Result<()>;
5136    fn ValidTo(&self, value: *mut f64) -> windows_core::Result<()>;
5137    fn DerEncodedSerialNumber(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5138    fn DisplayName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5139    fn ToPemEncoding(&self, pemencodeddata: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5140    fn PemEncodedIssuerCertificateChain(
5141        &self,
5142    ) -> windows_core::Result<ICoreWebView2StringCollection>;
5143}
5144impl ICoreWebView2Certificate_Vtbl {
5145    pub const fn new<Identity: ICoreWebView2Certificate_Impl, const OFFSET: isize>() -> Self {
5146        unsafe extern "system" fn Subject<
5147            Identity: ICoreWebView2Certificate_Impl,
5148            const OFFSET: isize,
5149        >(
5150            this: *mut core::ffi::c_void,
5151            value: *mut windows_core::PWSTR,
5152        ) -> windows_core::HRESULT {
5153            unsafe {
5154                let this: &Identity =
5155                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5156                ICoreWebView2Certificate_Impl::Subject(this, core::mem::transmute_copy(&value))
5157                    .into()
5158            }
5159        }
5160        unsafe extern "system" fn Issuer<
5161            Identity: ICoreWebView2Certificate_Impl,
5162            const OFFSET: isize,
5163        >(
5164            this: *mut core::ffi::c_void,
5165            value: *mut windows_core::PWSTR,
5166        ) -> windows_core::HRESULT {
5167            unsafe {
5168                let this: &Identity =
5169                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5170                ICoreWebView2Certificate_Impl::Issuer(this, core::mem::transmute_copy(&value))
5171                    .into()
5172            }
5173        }
5174        unsafe extern "system" fn ValidFrom<
5175            Identity: ICoreWebView2Certificate_Impl,
5176            const OFFSET: isize,
5177        >(
5178            this: *mut core::ffi::c_void,
5179            value: *mut f64,
5180        ) -> windows_core::HRESULT {
5181            unsafe {
5182                let this: &Identity =
5183                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5184                ICoreWebView2Certificate_Impl::ValidFrom(this, core::mem::transmute_copy(&value))
5185                    .into()
5186            }
5187        }
5188        unsafe extern "system" fn ValidTo<
5189            Identity: ICoreWebView2Certificate_Impl,
5190            const OFFSET: isize,
5191        >(
5192            this: *mut core::ffi::c_void,
5193            value: *mut f64,
5194        ) -> windows_core::HRESULT {
5195            unsafe {
5196                let this: &Identity =
5197                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5198                ICoreWebView2Certificate_Impl::ValidTo(this, core::mem::transmute_copy(&value))
5199                    .into()
5200            }
5201        }
5202        unsafe extern "system" fn DerEncodedSerialNumber<
5203            Identity: ICoreWebView2Certificate_Impl,
5204            const OFFSET: isize,
5205        >(
5206            this: *mut core::ffi::c_void,
5207            value: *mut windows_core::PWSTR,
5208        ) -> windows_core::HRESULT {
5209            unsafe {
5210                let this: &Identity =
5211                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5212                ICoreWebView2Certificate_Impl::DerEncodedSerialNumber(
5213                    this,
5214                    core::mem::transmute_copy(&value),
5215                )
5216                .into()
5217            }
5218        }
5219        unsafe extern "system" fn DisplayName<
5220            Identity: ICoreWebView2Certificate_Impl,
5221            const OFFSET: isize,
5222        >(
5223            this: *mut core::ffi::c_void,
5224            value: *mut windows_core::PWSTR,
5225        ) -> windows_core::HRESULT {
5226            unsafe {
5227                let this: &Identity =
5228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5229                ICoreWebView2Certificate_Impl::DisplayName(this, core::mem::transmute_copy(&value))
5230                    .into()
5231            }
5232        }
5233        unsafe extern "system" fn ToPemEncoding<
5234            Identity: ICoreWebView2Certificate_Impl,
5235            const OFFSET: isize,
5236        >(
5237            this: *mut core::ffi::c_void,
5238            pemencodeddata: *mut windows_core::PWSTR,
5239        ) -> windows_core::HRESULT {
5240            unsafe {
5241                let this: &Identity =
5242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5243                ICoreWebView2Certificate_Impl::ToPemEncoding(
5244                    this,
5245                    core::mem::transmute_copy(&pemencodeddata),
5246                )
5247                .into()
5248            }
5249        }
5250        unsafe extern "system" fn PemEncodedIssuerCertificateChain<
5251            Identity: ICoreWebView2Certificate_Impl,
5252            const OFFSET: isize,
5253        >(
5254            this: *mut core::ffi::c_void,
5255            value: *mut *mut core::ffi::c_void,
5256        ) -> windows_core::HRESULT {
5257            unsafe {
5258                let this: &Identity =
5259                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5260                match ICoreWebView2Certificate_Impl::PemEncodedIssuerCertificateChain(this) {
5261                    Ok(ok__) => {
5262                        value.write(core::mem::transmute(ok__));
5263                        windows_core::HRESULT(0)
5264                    }
5265                    Err(err) => err.into(),
5266                }
5267            }
5268        }
5269        Self {
5270            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5271            Subject: Subject::<Identity, OFFSET>,
5272            Issuer: Issuer::<Identity, OFFSET>,
5273            ValidFrom: ValidFrom::<Identity, OFFSET>,
5274            ValidTo: ValidTo::<Identity, OFFSET>,
5275            DerEncodedSerialNumber: DerEncodedSerialNumber::<Identity, OFFSET>,
5276            DisplayName: DisplayName::<Identity, OFFSET>,
5277            ToPemEncoding: ToPemEncoding::<Identity, OFFSET>,
5278            PemEncodedIssuerCertificateChain: PemEncodedIssuerCertificateChain::<Identity, OFFSET>,
5279        }
5280    }
5281    pub fn matches(iid: &windows_core::GUID) -> bool {
5282        iid == &<ICoreWebView2Certificate as windows_core::Interface>::IID
5283    }
5284}
5285impl windows_core::RuntimeName for ICoreWebView2Certificate {}
5286windows_core::imp::define_interface!(
5287    ICoreWebView2ClearBrowsingDataCompletedHandler,
5288    ICoreWebView2ClearBrowsingDataCompletedHandler_Vtbl,
5289    0xe9710a06_1d1d_49b2_8234_226f35846ae5
5290);
5291windows_core::imp::interface_hierarchy!(
5292    ICoreWebView2ClearBrowsingDataCompletedHandler,
5293    windows_core::IUnknown
5294);
5295impl ICoreWebView2ClearBrowsingDataCompletedHandler {
5296    pub unsafe fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()> {
5297        unsafe {
5298            (windows_core::Interface::vtable(self).Invoke)(
5299                windows_core::Interface::as_raw(self),
5300                errorcode,
5301            )
5302            .ok()
5303        }
5304    }
5305}
5306#[repr(C)]
5307#[doc(hidden)]
5308pub struct ICoreWebView2ClearBrowsingDataCompletedHandler_Vtbl {
5309    pub base__: windows_core::IUnknown_Vtbl,
5310    pub Invoke: unsafe extern "system" fn(
5311        *mut core::ffi::c_void,
5312        windows_core::HRESULT,
5313    ) -> windows_core::HRESULT,
5314}
5315pub trait ICoreWebView2ClearBrowsingDataCompletedHandler_Impl: windows_core::IUnknownImpl {
5316    fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()>;
5317}
5318impl ICoreWebView2ClearBrowsingDataCompletedHandler_Vtbl {
5319    pub const fn new<
5320        Identity: ICoreWebView2ClearBrowsingDataCompletedHandler_Impl,
5321        const OFFSET: isize,
5322    >() -> Self {
5323        unsafe extern "system" fn Invoke<
5324            Identity: ICoreWebView2ClearBrowsingDataCompletedHandler_Impl,
5325            const OFFSET: isize,
5326        >(
5327            this: *mut core::ffi::c_void,
5328            errorcode: windows_core::HRESULT,
5329        ) -> windows_core::HRESULT {
5330            unsafe {
5331                let this: &Identity =
5332                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5333                ICoreWebView2ClearBrowsingDataCompletedHandler_Impl::Invoke(
5334                    this,
5335                    core::mem::transmute_copy(&errorcode),
5336                )
5337                .into()
5338            }
5339        }
5340        Self {
5341            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5342            Invoke: Invoke::<Identity, OFFSET>,
5343        }
5344    }
5345    pub fn matches(iid: &windows_core::GUID) -> bool {
5346        iid == &<ICoreWebView2ClearBrowsingDataCompletedHandler as windows_core::Interface>::IID
5347    }
5348}
5349impl windows_core::RuntimeName for ICoreWebView2ClearBrowsingDataCompletedHandler {}
5350windows_core::imp::define_interface!(
5351    ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler,
5352    ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Vtbl,
5353    0x3b40aac6_acfe_4ffd_8211_f607b96e2d5b
5354);
5355windows_core::imp::interface_hierarchy!(
5356    ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler,
5357    windows_core::IUnknown
5358);
5359impl ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler {
5360    pub unsafe fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()> {
5361        unsafe {
5362            (windows_core::Interface::vtable(self).Invoke)(
5363                windows_core::Interface::as_raw(self),
5364                errorcode,
5365            )
5366            .ok()
5367        }
5368    }
5369}
5370#[repr(C)]
5371#[doc(hidden)]
5372pub struct ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Vtbl {
5373    pub base__: windows_core::IUnknown_Vtbl,
5374    pub Invoke: unsafe extern "system" fn(
5375        *mut core::ffi::c_void,
5376        windows_core::HRESULT,
5377    ) -> windows_core::HRESULT,
5378}
5379pub trait ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Impl:
5380    windows_core::IUnknownImpl
5381{
5382    fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()>;
5383}
5384impl ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Vtbl {
5385    pub const fn new<
5386        Identity: ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Impl,
5387        const OFFSET: isize,
5388    >() -> Self {
5389        unsafe extern "system" fn Invoke<
5390            Identity: ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Impl,
5391            const OFFSET: isize,
5392        >(
5393            this: *mut core::ffi::c_void,
5394            errorcode: windows_core::HRESULT,
5395        ) -> windows_core::HRESULT {
5396            unsafe {
5397                let this: &Identity =
5398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5399                ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Impl::Invoke(
5400                    this,
5401                    core::mem::transmute_copy(&errorcode),
5402                )
5403                .into()
5404            }
5405        }
5406        Self {
5407            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5408            Invoke: Invoke::<Identity, OFFSET>,
5409        }
5410    }
5411    pub fn matches(iid: &windows_core::GUID) -> bool {
5412        iid == & < ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler as windows_core::Interface >::IID
5413    }
5414}
5415impl windows_core::RuntimeName for ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler {}
5416windows_core::imp::define_interface!(
5417    ICoreWebView2ClientCertificate,
5418    ICoreWebView2ClientCertificate_Vtbl,
5419    0xe7188076_bcc3_11eb_8529_0242ac130003
5420);
5421windows_core::imp::interface_hierarchy!(ICoreWebView2ClientCertificate, windows_core::IUnknown);
5422impl ICoreWebView2ClientCertificate {
5423    pub unsafe fn Subject(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5424        unsafe {
5425            (windows_core::Interface::vtable(self).Subject)(
5426                windows_core::Interface::as_raw(self),
5427                value as _,
5428            )
5429            .ok()
5430        }
5431    }
5432    pub unsafe fn Issuer(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5433        unsafe {
5434            (windows_core::Interface::vtable(self).Issuer)(
5435                windows_core::Interface::as_raw(self),
5436                value as _,
5437            )
5438            .ok()
5439        }
5440    }
5441    pub unsafe fn ValidFrom(&self, value: *mut f64) -> windows_core::Result<()> {
5442        unsafe {
5443            (windows_core::Interface::vtable(self).ValidFrom)(
5444                windows_core::Interface::as_raw(self),
5445                value as _,
5446            )
5447            .ok()
5448        }
5449    }
5450    pub unsafe fn ValidTo(&self, value: *mut f64) -> windows_core::Result<()> {
5451        unsafe {
5452            (windows_core::Interface::vtable(self).ValidTo)(
5453                windows_core::Interface::as_raw(self),
5454                value as _,
5455            )
5456            .ok()
5457        }
5458    }
5459    pub unsafe fn DerEncodedSerialNumber(
5460        &self,
5461        value: *mut windows_core::PWSTR,
5462    ) -> windows_core::Result<()> {
5463        unsafe {
5464            (windows_core::Interface::vtable(self).DerEncodedSerialNumber)(
5465                windows_core::Interface::as_raw(self),
5466                value as _,
5467            )
5468            .ok()
5469        }
5470    }
5471    pub unsafe fn DisplayName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5472        unsafe {
5473            (windows_core::Interface::vtable(self).DisplayName)(
5474                windows_core::Interface::as_raw(self),
5475                value as _,
5476            )
5477            .ok()
5478        }
5479    }
5480    pub unsafe fn ToPemEncoding(
5481        &self,
5482        pemencodeddata: *mut windows_core::PWSTR,
5483    ) -> windows_core::Result<()> {
5484        unsafe {
5485            (windows_core::Interface::vtable(self).ToPemEncoding)(
5486                windows_core::Interface::as_raw(self),
5487                pemencodeddata as _,
5488            )
5489            .ok()
5490        }
5491    }
5492    pub unsafe fn PemEncodedIssuerCertificateChain(
5493        &self,
5494    ) -> windows_core::Result<ICoreWebView2StringCollection> {
5495        unsafe {
5496            let mut result__ = core::mem::zeroed();
5497            (windows_core::Interface::vtable(self).PemEncodedIssuerCertificateChain)(
5498                windows_core::Interface::as_raw(self),
5499                &mut result__,
5500            )
5501            .and_then(|| windows_core::Type::from_abi(result__))
5502        }
5503    }
5504    pub unsafe fn Kind(
5505        &self,
5506        value: *mut COREWEBVIEW2_CLIENT_CERTIFICATE_KIND,
5507    ) -> windows_core::Result<()> {
5508        unsafe {
5509            (windows_core::Interface::vtable(self).Kind)(
5510                windows_core::Interface::as_raw(self),
5511                value as _,
5512            )
5513            .ok()
5514        }
5515    }
5516}
5517#[repr(C)]
5518#[doc(hidden)]
5519pub struct ICoreWebView2ClientCertificate_Vtbl {
5520    pub base__: windows_core::IUnknown_Vtbl,
5521    pub Subject: unsafe extern "system" fn(
5522        *mut core::ffi::c_void,
5523        *mut windows_core::PWSTR,
5524    ) -> windows_core::HRESULT,
5525    pub Issuer: unsafe extern "system" fn(
5526        *mut core::ffi::c_void,
5527        *mut windows_core::PWSTR,
5528    ) -> windows_core::HRESULT,
5529    pub ValidFrom:
5530        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
5531    pub ValidTo:
5532        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
5533    pub DerEncodedSerialNumber: unsafe extern "system" fn(
5534        *mut core::ffi::c_void,
5535        *mut windows_core::PWSTR,
5536    ) -> windows_core::HRESULT,
5537    pub DisplayName: unsafe extern "system" fn(
5538        *mut core::ffi::c_void,
5539        *mut windows_core::PWSTR,
5540    ) -> windows_core::HRESULT,
5541    pub ToPemEncoding: unsafe extern "system" fn(
5542        *mut core::ffi::c_void,
5543        *mut windows_core::PWSTR,
5544    ) -> windows_core::HRESULT,
5545    pub PemEncodedIssuerCertificateChain: unsafe extern "system" fn(
5546        *mut core::ffi::c_void,
5547        *mut *mut core::ffi::c_void,
5548    ) -> windows_core::HRESULT,
5549    pub Kind: unsafe extern "system" fn(
5550        *mut core::ffi::c_void,
5551        *mut COREWEBVIEW2_CLIENT_CERTIFICATE_KIND,
5552    ) -> windows_core::HRESULT,
5553}
5554pub trait ICoreWebView2ClientCertificate_Impl: windows_core::IUnknownImpl {
5555    fn Subject(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5556    fn Issuer(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5557    fn ValidFrom(&self, value: *mut f64) -> windows_core::Result<()>;
5558    fn ValidTo(&self, value: *mut f64) -> windows_core::Result<()>;
5559    fn DerEncodedSerialNumber(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5560    fn DisplayName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5561    fn ToPemEncoding(&self, pemencodeddata: *mut windows_core::PWSTR) -> windows_core::Result<()>;
5562    fn PemEncodedIssuerCertificateChain(
5563        &self,
5564    ) -> windows_core::Result<ICoreWebView2StringCollection>;
5565    fn Kind(&self, value: *mut COREWEBVIEW2_CLIENT_CERTIFICATE_KIND) -> windows_core::Result<()>;
5566}
5567impl ICoreWebView2ClientCertificate_Vtbl {
5568    pub const fn new<Identity: ICoreWebView2ClientCertificate_Impl, const OFFSET: isize>() -> Self {
5569        unsafe extern "system" fn Subject<
5570            Identity: ICoreWebView2ClientCertificate_Impl,
5571            const OFFSET: isize,
5572        >(
5573            this: *mut core::ffi::c_void,
5574            value: *mut windows_core::PWSTR,
5575        ) -> windows_core::HRESULT {
5576            unsafe {
5577                let this: &Identity =
5578                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5579                ICoreWebView2ClientCertificate_Impl::Subject(
5580                    this,
5581                    core::mem::transmute_copy(&value),
5582                )
5583                .into()
5584            }
5585        }
5586        unsafe extern "system" fn Issuer<
5587            Identity: ICoreWebView2ClientCertificate_Impl,
5588            const OFFSET: isize,
5589        >(
5590            this: *mut core::ffi::c_void,
5591            value: *mut windows_core::PWSTR,
5592        ) -> windows_core::HRESULT {
5593            unsafe {
5594                let this: &Identity =
5595                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5596                ICoreWebView2ClientCertificate_Impl::Issuer(this, core::mem::transmute_copy(&value))
5597                    .into()
5598            }
5599        }
5600        unsafe extern "system" fn ValidFrom<
5601            Identity: ICoreWebView2ClientCertificate_Impl,
5602            const OFFSET: isize,
5603        >(
5604            this: *mut core::ffi::c_void,
5605            value: *mut f64,
5606        ) -> windows_core::HRESULT {
5607            unsafe {
5608                let this: &Identity =
5609                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5610                ICoreWebView2ClientCertificate_Impl::ValidFrom(
5611                    this,
5612                    core::mem::transmute_copy(&value),
5613                )
5614                .into()
5615            }
5616        }
5617        unsafe extern "system" fn ValidTo<
5618            Identity: ICoreWebView2ClientCertificate_Impl,
5619            const OFFSET: isize,
5620        >(
5621            this: *mut core::ffi::c_void,
5622            value: *mut f64,
5623        ) -> windows_core::HRESULT {
5624            unsafe {
5625                let this: &Identity =
5626                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5627                ICoreWebView2ClientCertificate_Impl::ValidTo(
5628                    this,
5629                    core::mem::transmute_copy(&value),
5630                )
5631                .into()
5632            }
5633        }
5634        unsafe extern "system" fn DerEncodedSerialNumber<
5635            Identity: ICoreWebView2ClientCertificate_Impl,
5636            const OFFSET: isize,
5637        >(
5638            this: *mut core::ffi::c_void,
5639            value: *mut windows_core::PWSTR,
5640        ) -> windows_core::HRESULT {
5641            unsafe {
5642                let this: &Identity =
5643                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5644                ICoreWebView2ClientCertificate_Impl::DerEncodedSerialNumber(
5645                    this,
5646                    core::mem::transmute_copy(&value),
5647                )
5648                .into()
5649            }
5650        }
5651        unsafe extern "system" fn DisplayName<
5652            Identity: ICoreWebView2ClientCertificate_Impl,
5653            const OFFSET: isize,
5654        >(
5655            this: *mut core::ffi::c_void,
5656            value: *mut windows_core::PWSTR,
5657        ) -> windows_core::HRESULT {
5658            unsafe {
5659                let this: &Identity =
5660                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5661                ICoreWebView2ClientCertificate_Impl::DisplayName(
5662                    this,
5663                    core::mem::transmute_copy(&value),
5664                )
5665                .into()
5666            }
5667        }
5668        unsafe extern "system" fn ToPemEncoding<
5669            Identity: ICoreWebView2ClientCertificate_Impl,
5670            const OFFSET: isize,
5671        >(
5672            this: *mut core::ffi::c_void,
5673            pemencodeddata: *mut windows_core::PWSTR,
5674        ) -> windows_core::HRESULT {
5675            unsafe {
5676                let this: &Identity =
5677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5678                ICoreWebView2ClientCertificate_Impl::ToPemEncoding(
5679                    this,
5680                    core::mem::transmute_copy(&pemencodeddata),
5681                )
5682                .into()
5683            }
5684        }
5685        unsafe extern "system" fn PemEncodedIssuerCertificateChain<
5686            Identity: ICoreWebView2ClientCertificate_Impl,
5687            const OFFSET: isize,
5688        >(
5689            this: *mut core::ffi::c_void,
5690            value: *mut *mut core::ffi::c_void,
5691        ) -> windows_core::HRESULT {
5692            unsafe {
5693                let this: &Identity =
5694                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5695                match ICoreWebView2ClientCertificate_Impl::PemEncodedIssuerCertificateChain(this) {
5696                    Ok(ok__) => {
5697                        value.write(core::mem::transmute(ok__));
5698                        windows_core::HRESULT(0)
5699                    }
5700                    Err(err) => err.into(),
5701                }
5702            }
5703        }
5704        unsafe extern "system" fn Kind<
5705            Identity: ICoreWebView2ClientCertificate_Impl,
5706            const OFFSET: isize,
5707        >(
5708            this: *mut core::ffi::c_void,
5709            value: *mut COREWEBVIEW2_CLIENT_CERTIFICATE_KIND,
5710        ) -> windows_core::HRESULT {
5711            unsafe {
5712                let this: &Identity =
5713                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5714                ICoreWebView2ClientCertificate_Impl::Kind(this, core::mem::transmute_copy(&value))
5715                    .into()
5716            }
5717        }
5718        Self {
5719            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5720            Subject: Subject::<Identity, OFFSET>,
5721            Issuer: Issuer::<Identity, OFFSET>,
5722            ValidFrom: ValidFrom::<Identity, OFFSET>,
5723            ValidTo: ValidTo::<Identity, OFFSET>,
5724            DerEncodedSerialNumber: DerEncodedSerialNumber::<Identity, OFFSET>,
5725            DisplayName: DisplayName::<Identity, OFFSET>,
5726            ToPemEncoding: ToPemEncoding::<Identity, OFFSET>,
5727            PemEncodedIssuerCertificateChain: PemEncodedIssuerCertificateChain::<Identity, OFFSET>,
5728            Kind: Kind::<Identity, OFFSET>,
5729        }
5730    }
5731    pub fn matches(iid: &windows_core::GUID) -> bool {
5732        iid == &<ICoreWebView2ClientCertificate as windows_core::Interface>::IID
5733    }
5734}
5735impl windows_core::RuntimeName for ICoreWebView2ClientCertificate {}
5736windows_core::imp::define_interface!(
5737    ICoreWebView2ClientCertificateCollection,
5738    ICoreWebView2ClientCertificateCollection_Vtbl,
5739    0xef5674d2_bcc3_11eb_8529_0242ac130003
5740);
5741windows_core::imp::interface_hierarchy!(
5742    ICoreWebView2ClientCertificateCollection,
5743    windows_core::IUnknown
5744);
5745impl ICoreWebView2ClientCertificateCollection {
5746    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
5747        unsafe {
5748            (windows_core::Interface::vtable(self).Count)(
5749                windows_core::Interface::as_raw(self),
5750                value as _,
5751            )
5752            .ok()
5753        }
5754    }
5755    pub unsafe fn GetValueAtIndex(
5756        &self,
5757        index: u32,
5758    ) -> windows_core::Result<ICoreWebView2ClientCertificate> {
5759        unsafe {
5760            let mut result__ = core::mem::zeroed();
5761            (windows_core::Interface::vtable(self).GetValueAtIndex)(
5762                windows_core::Interface::as_raw(self),
5763                index,
5764                &mut result__,
5765            )
5766            .and_then(|| windows_core::Type::from_abi(result__))
5767        }
5768    }
5769}
5770#[repr(C)]
5771#[doc(hidden)]
5772pub struct ICoreWebView2ClientCertificateCollection_Vtbl {
5773    pub base__: windows_core::IUnknown_Vtbl,
5774    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
5775    pub GetValueAtIndex: unsafe extern "system" fn(
5776        *mut core::ffi::c_void,
5777        u32,
5778        *mut *mut core::ffi::c_void,
5779    ) -> windows_core::HRESULT,
5780}
5781pub trait ICoreWebView2ClientCertificateCollection_Impl: windows_core::IUnknownImpl {
5782    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
5783    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2ClientCertificate>;
5784}
5785impl ICoreWebView2ClientCertificateCollection_Vtbl {
5786    pub const fn new<
5787        Identity: ICoreWebView2ClientCertificateCollection_Impl,
5788        const OFFSET: isize,
5789    >() -> Self {
5790        unsafe extern "system" fn Count<
5791            Identity: ICoreWebView2ClientCertificateCollection_Impl,
5792            const OFFSET: isize,
5793        >(
5794            this: *mut core::ffi::c_void,
5795            value: *mut u32,
5796        ) -> windows_core::HRESULT {
5797            unsafe {
5798                let this: &Identity =
5799                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5800                ICoreWebView2ClientCertificateCollection_Impl::Count(
5801                    this,
5802                    core::mem::transmute_copy(&value),
5803                )
5804                .into()
5805            }
5806        }
5807        unsafe extern "system" fn GetValueAtIndex<
5808            Identity: ICoreWebView2ClientCertificateCollection_Impl,
5809            const OFFSET: isize,
5810        >(
5811            this: *mut core::ffi::c_void,
5812            index: u32,
5813            value: *mut *mut core::ffi::c_void,
5814        ) -> windows_core::HRESULT {
5815            unsafe {
5816                let this: &Identity =
5817                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5818                match ICoreWebView2ClientCertificateCollection_Impl::GetValueAtIndex(
5819                    this,
5820                    core::mem::transmute_copy(&index),
5821                ) {
5822                    Ok(ok__) => {
5823                        value.write(core::mem::transmute(ok__));
5824                        windows_core::HRESULT(0)
5825                    }
5826                    Err(err) => err.into(),
5827                }
5828            }
5829        }
5830        Self {
5831            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5832            Count: Count::<Identity, OFFSET>,
5833            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
5834        }
5835    }
5836    pub fn matches(iid: &windows_core::GUID) -> bool {
5837        iid == &<ICoreWebView2ClientCertificateCollection as windows_core::Interface>::IID
5838    }
5839}
5840impl windows_core::RuntimeName for ICoreWebView2ClientCertificateCollection {}
5841windows_core::imp::define_interface!(
5842    ICoreWebView2ClientCertificateRequestedEventArgs,
5843    ICoreWebView2ClientCertificateRequestedEventArgs_Vtbl,
5844    0xbc59db28_bcc3_11eb_8529_0242ac130003
5845);
5846windows_core::imp::interface_hierarchy!(
5847    ICoreWebView2ClientCertificateRequestedEventArgs,
5848    windows_core::IUnknown
5849);
5850impl ICoreWebView2ClientCertificateRequestedEventArgs {
5851    pub unsafe fn Host(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
5852        unsafe {
5853            (windows_core::Interface::vtable(self).Host)(
5854                windows_core::Interface::as_raw(self),
5855                value as _,
5856            )
5857            .ok()
5858        }
5859    }
5860    pub unsafe fn Port(&self, value: *mut i32) -> windows_core::Result<()> {
5861        unsafe {
5862            (windows_core::Interface::vtable(self).Port)(
5863                windows_core::Interface::as_raw(self),
5864                value as _,
5865            )
5866            .ok()
5867        }
5868    }
5869    pub unsafe fn IsProxy(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
5870        unsafe {
5871            (windows_core::Interface::vtable(self).IsProxy)(
5872                windows_core::Interface::as_raw(self),
5873                value as _,
5874            )
5875            .ok()
5876        }
5877    }
5878    pub unsafe fn AllowedCertificateAuthorities(
5879        &self,
5880    ) -> windows_core::Result<ICoreWebView2StringCollection> {
5881        unsafe {
5882            let mut result__ = core::mem::zeroed();
5883            (windows_core::Interface::vtable(self).AllowedCertificateAuthorities)(
5884                windows_core::Interface::as_raw(self),
5885                &mut result__,
5886            )
5887            .and_then(|| windows_core::Type::from_abi(result__))
5888        }
5889    }
5890    pub unsafe fn MutuallyTrustedCertificates(
5891        &self,
5892    ) -> windows_core::Result<ICoreWebView2ClientCertificateCollection> {
5893        unsafe {
5894            let mut result__ = core::mem::zeroed();
5895            (windows_core::Interface::vtable(self).MutuallyTrustedCertificates)(
5896                windows_core::Interface::as_raw(self),
5897                &mut result__,
5898            )
5899            .and_then(|| windows_core::Type::from_abi(result__))
5900        }
5901    }
5902    pub unsafe fn SelectedCertificate(
5903        &self,
5904    ) -> windows_core::Result<ICoreWebView2ClientCertificate> {
5905        unsafe {
5906            let mut result__ = core::mem::zeroed();
5907            (windows_core::Interface::vtable(self).SelectedCertificate)(
5908                windows_core::Interface::as_raw(self),
5909                &mut result__,
5910            )
5911            .and_then(|| windows_core::Type::from_abi(result__))
5912        }
5913    }
5914    pub unsafe fn SetSelectedCertificate<P0>(&self, value: P0) -> windows_core::Result<()>
5915    where
5916        P0: windows_core::Param<ICoreWebView2ClientCertificate>,
5917    {
5918        unsafe {
5919            (windows_core::Interface::vtable(self).SetSelectedCertificate)(
5920                windows_core::Interface::as_raw(self),
5921                value.param().abi(),
5922            )
5923            .ok()
5924        }
5925    }
5926    pub unsafe fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
5927        unsafe {
5928            (windows_core::Interface::vtable(self).Cancel)(
5929                windows_core::Interface::as_raw(self),
5930                value as _,
5931            )
5932            .ok()
5933        }
5934    }
5935    pub unsafe fn SetCancel(&self, value: bool) -> windows_core::Result<()> {
5936        unsafe {
5937            (windows_core::Interface::vtable(self).SetCancel)(
5938                windows_core::Interface::as_raw(self),
5939                value.into(),
5940            )
5941            .ok()
5942        }
5943    }
5944    pub unsafe fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
5945        unsafe {
5946            (windows_core::Interface::vtable(self).Handled)(
5947                windows_core::Interface::as_raw(self),
5948                value as _,
5949            )
5950            .ok()
5951        }
5952    }
5953    pub unsafe fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
5954        unsafe {
5955            (windows_core::Interface::vtable(self).SetHandled)(
5956                windows_core::Interface::as_raw(self),
5957                value.into(),
5958            )
5959            .ok()
5960        }
5961    }
5962    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
5963        unsafe {
5964            let mut result__ = core::mem::zeroed();
5965            (windows_core::Interface::vtable(self).GetDeferral)(
5966                windows_core::Interface::as_raw(self),
5967                &mut result__,
5968            )
5969            .and_then(|| windows_core::Type::from_abi(result__))
5970        }
5971    }
5972}
5973#[repr(C)]
5974#[doc(hidden)]
5975pub struct ICoreWebView2ClientCertificateRequestedEventArgs_Vtbl {
5976    pub base__: windows_core::IUnknown_Vtbl,
5977    pub Host: unsafe extern "system" fn(
5978        *mut core::ffi::c_void,
5979        *mut windows_core::PWSTR,
5980    ) -> windows_core::HRESULT,
5981    pub Port: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
5982    pub IsProxy: unsafe extern "system" fn(
5983        *mut core::ffi::c_void,
5984        *mut windows_core::BOOL,
5985    ) -> windows_core::HRESULT,
5986    pub AllowedCertificateAuthorities: unsafe extern "system" fn(
5987        *mut core::ffi::c_void,
5988        *mut *mut core::ffi::c_void,
5989    ) -> windows_core::HRESULT,
5990    pub MutuallyTrustedCertificates: unsafe extern "system" fn(
5991        *mut core::ffi::c_void,
5992        *mut *mut core::ffi::c_void,
5993    ) -> windows_core::HRESULT,
5994    pub SelectedCertificate: unsafe extern "system" fn(
5995        *mut core::ffi::c_void,
5996        *mut *mut core::ffi::c_void,
5997    ) -> windows_core::HRESULT,
5998    pub SetSelectedCertificate: unsafe extern "system" fn(
5999        *mut core::ffi::c_void,
6000        *mut core::ffi::c_void,
6001    ) -> windows_core::HRESULT,
6002    pub Cancel: unsafe extern "system" fn(
6003        *mut core::ffi::c_void,
6004        *mut windows_core::BOOL,
6005    ) -> windows_core::HRESULT,
6006    pub SetCancel: unsafe extern "system" fn(
6007        *mut core::ffi::c_void,
6008        windows_core::BOOL,
6009    ) -> windows_core::HRESULT,
6010    pub Handled: unsafe extern "system" fn(
6011        *mut core::ffi::c_void,
6012        *mut windows_core::BOOL,
6013    ) -> windows_core::HRESULT,
6014    pub SetHandled: unsafe extern "system" fn(
6015        *mut core::ffi::c_void,
6016        windows_core::BOOL,
6017    ) -> windows_core::HRESULT,
6018    pub GetDeferral: unsafe extern "system" fn(
6019        *mut core::ffi::c_void,
6020        *mut *mut core::ffi::c_void,
6021    ) -> windows_core::HRESULT,
6022}
6023pub trait ICoreWebView2ClientCertificateRequestedEventArgs_Impl:
6024    windows_core::IUnknownImpl
6025{
6026    fn Host(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
6027    fn Port(&self, value: *mut i32) -> windows_core::Result<()>;
6028    fn IsProxy(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
6029    fn AllowedCertificateAuthorities(&self) -> windows_core::Result<ICoreWebView2StringCollection>;
6030    fn MutuallyTrustedCertificates(
6031        &self,
6032    ) -> windows_core::Result<ICoreWebView2ClientCertificateCollection>;
6033    fn SelectedCertificate(&self) -> windows_core::Result<ICoreWebView2ClientCertificate>;
6034    fn SetSelectedCertificate(
6035        &self,
6036        value: windows_core::Ref<'_, ICoreWebView2ClientCertificate>,
6037    ) -> windows_core::Result<()>;
6038    fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
6039    fn SetCancel(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
6040    fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
6041    fn SetHandled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
6042    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
6043}
6044impl ICoreWebView2ClientCertificateRequestedEventArgs_Vtbl {
6045    pub const fn new<
6046        Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6047        const OFFSET: isize,
6048    >() -> Self {
6049        unsafe extern "system" fn Host<
6050            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6051            const OFFSET: isize,
6052        >(
6053            this: *mut core::ffi::c_void,
6054            value: *mut windows_core::PWSTR,
6055        ) -> windows_core::HRESULT {
6056            unsafe {
6057                let this: &Identity =
6058                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6059                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::Host(
6060                    this,
6061                    core::mem::transmute_copy(&value),
6062                )
6063                .into()
6064            }
6065        }
6066        unsafe extern "system" fn Port<
6067            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6068            const OFFSET: isize,
6069        >(
6070            this: *mut core::ffi::c_void,
6071            value: *mut i32,
6072        ) -> windows_core::HRESULT {
6073            unsafe {
6074                let this: &Identity =
6075                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6076                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::Port(
6077                    this,
6078                    core::mem::transmute_copy(&value),
6079                )
6080                .into()
6081            }
6082        }
6083        unsafe extern "system" fn IsProxy<
6084            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6085            const OFFSET: isize,
6086        >(
6087            this: *mut core::ffi::c_void,
6088            value: *mut windows_core::BOOL,
6089        ) -> windows_core::HRESULT {
6090            unsafe {
6091                let this: &Identity =
6092                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6093                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::IsProxy(
6094                    this,
6095                    core::mem::transmute_copy(&value),
6096                )
6097                .into()
6098            }
6099        }
6100        unsafe extern "system" fn AllowedCertificateAuthorities<
6101            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6102            const OFFSET: isize,
6103        >(
6104            this: *mut core::ffi::c_void,
6105            value: *mut *mut core::ffi::c_void,
6106        ) -> windows_core::HRESULT {
6107            unsafe {
6108                let this: &Identity =
6109                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6110                match ICoreWebView2ClientCertificateRequestedEventArgs_Impl:: AllowedCertificateAuthorities ( this , ) { Ok ( ok__ ) => { value . write ( core::mem::transmute ( ok__ ) ) ; windows_core::HRESULT ( 0 ) } Err ( err ) => err . into ( ) }
6111            }
6112        }
6113        unsafe extern "system" fn MutuallyTrustedCertificates<
6114            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6115            const OFFSET: isize,
6116        >(
6117            this: *mut core::ffi::c_void,
6118            value: *mut *mut core::ffi::c_void,
6119        ) -> windows_core::HRESULT {
6120            unsafe {
6121                let this: &Identity =
6122                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6123                match ICoreWebView2ClientCertificateRequestedEventArgs_Impl:: MutuallyTrustedCertificates ( this , ) { Ok ( ok__ ) => { value . write ( core::mem::transmute ( ok__ ) ) ; windows_core::HRESULT ( 0 ) } Err ( err ) => err . into ( ) }
6124            }
6125        }
6126        unsafe extern "system" fn SelectedCertificate<
6127            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6128            const OFFSET: isize,
6129        >(
6130            this: *mut core::ffi::c_void,
6131            value: *mut *mut core::ffi::c_void,
6132        ) -> windows_core::HRESULT {
6133            unsafe {
6134                let this: &Identity =
6135                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6136                match ICoreWebView2ClientCertificateRequestedEventArgs_Impl::SelectedCertificate(
6137                    this,
6138                ) {
6139                    Ok(ok__) => {
6140                        value.write(core::mem::transmute(ok__));
6141                        windows_core::HRESULT(0)
6142                    }
6143                    Err(err) => err.into(),
6144                }
6145            }
6146        }
6147        unsafe extern "system" fn SetSelectedCertificate<
6148            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6149            const OFFSET: isize,
6150        >(
6151            this: *mut core::ffi::c_void,
6152            value: *mut core::ffi::c_void,
6153        ) -> windows_core::HRESULT {
6154            unsafe {
6155                let this: &Identity =
6156                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6157                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::SetSelectedCertificate(
6158                    this,
6159                    core::mem::transmute_copy(&value),
6160                )
6161                .into()
6162            }
6163        }
6164        unsafe extern "system" fn Cancel<
6165            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6166            const OFFSET: isize,
6167        >(
6168            this: *mut core::ffi::c_void,
6169            value: *mut windows_core::BOOL,
6170        ) -> windows_core::HRESULT {
6171            unsafe {
6172                let this: &Identity =
6173                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6174                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::Cancel(
6175                    this,
6176                    core::mem::transmute_copy(&value),
6177                )
6178                .into()
6179            }
6180        }
6181        unsafe extern "system" fn SetCancel<
6182            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6183            const OFFSET: isize,
6184        >(
6185            this: *mut core::ffi::c_void,
6186            value: windows_core::BOOL,
6187        ) -> windows_core::HRESULT {
6188            unsafe {
6189                let this: &Identity =
6190                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6191                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::SetCancel(
6192                    this,
6193                    core::mem::transmute_copy(&value),
6194                )
6195                .into()
6196            }
6197        }
6198        unsafe extern "system" fn Handled<
6199            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6200            const OFFSET: isize,
6201        >(
6202            this: *mut core::ffi::c_void,
6203            value: *mut windows_core::BOOL,
6204        ) -> windows_core::HRESULT {
6205            unsafe {
6206                let this: &Identity =
6207                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6208                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::Handled(
6209                    this,
6210                    core::mem::transmute_copy(&value),
6211                )
6212                .into()
6213            }
6214        }
6215        unsafe extern "system" fn SetHandled<
6216            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6217            const OFFSET: isize,
6218        >(
6219            this: *mut core::ffi::c_void,
6220            value: windows_core::BOOL,
6221        ) -> windows_core::HRESULT {
6222            unsafe {
6223                let this: &Identity =
6224                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6225                ICoreWebView2ClientCertificateRequestedEventArgs_Impl::SetHandled(
6226                    this,
6227                    core::mem::transmute_copy(&value),
6228                )
6229                .into()
6230            }
6231        }
6232        unsafe extern "system" fn GetDeferral<
6233            Identity: ICoreWebView2ClientCertificateRequestedEventArgs_Impl,
6234            const OFFSET: isize,
6235        >(
6236            this: *mut core::ffi::c_void,
6237            deferral: *mut *mut core::ffi::c_void,
6238        ) -> windows_core::HRESULT {
6239            unsafe {
6240                let this: &Identity =
6241                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6242                match ICoreWebView2ClientCertificateRequestedEventArgs_Impl::GetDeferral(this) {
6243                    Ok(ok__) => {
6244                        deferral.write(core::mem::transmute(ok__));
6245                        windows_core::HRESULT(0)
6246                    }
6247                    Err(err) => err.into(),
6248                }
6249            }
6250        }
6251        Self {
6252            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6253            Host: Host::<Identity, OFFSET>,
6254            Port: Port::<Identity, OFFSET>,
6255            IsProxy: IsProxy::<Identity, OFFSET>,
6256            AllowedCertificateAuthorities: AllowedCertificateAuthorities::<Identity, OFFSET>,
6257            MutuallyTrustedCertificates: MutuallyTrustedCertificates::<Identity, OFFSET>,
6258            SelectedCertificate: SelectedCertificate::<Identity, OFFSET>,
6259            SetSelectedCertificate: SetSelectedCertificate::<Identity, OFFSET>,
6260            Cancel: Cancel::<Identity, OFFSET>,
6261            SetCancel: SetCancel::<Identity, OFFSET>,
6262            Handled: Handled::<Identity, OFFSET>,
6263            SetHandled: SetHandled::<Identity, OFFSET>,
6264            GetDeferral: GetDeferral::<Identity, OFFSET>,
6265        }
6266    }
6267    pub fn matches(iid: &windows_core::GUID) -> bool {
6268        iid == &<ICoreWebView2ClientCertificateRequestedEventArgs as windows_core::Interface>::IID
6269    }
6270}
6271impl windows_core::RuntimeName for ICoreWebView2ClientCertificateRequestedEventArgs {}
6272windows_core::imp::define_interface!(
6273    ICoreWebView2ClientCertificateRequestedEventHandler,
6274    ICoreWebView2ClientCertificateRequestedEventHandler_Vtbl,
6275    0xd7175ba2_bcc3_11eb_8529_0242ac130003
6276);
6277windows_core::imp::interface_hierarchy!(
6278    ICoreWebView2ClientCertificateRequestedEventHandler,
6279    windows_core::IUnknown
6280);
6281impl ICoreWebView2ClientCertificateRequestedEventHandler {
6282    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
6283    where
6284        P0: windows_core::Param<ICoreWebView2>,
6285        P1: windows_core::Param<ICoreWebView2ClientCertificateRequestedEventArgs>,
6286    {
6287        unsafe {
6288            (windows_core::Interface::vtable(self).Invoke)(
6289                windows_core::Interface::as_raw(self),
6290                sender.param().abi(),
6291                args.param().abi(),
6292            )
6293            .ok()
6294        }
6295    }
6296}
6297#[repr(C)]
6298#[doc(hidden)]
6299pub struct ICoreWebView2ClientCertificateRequestedEventHandler_Vtbl {
6300    pub base__: windows_core::IUnknown_Vtbl,
6301    pub Invoke: unsafe extern "system" fn(
6302        *mut core::ffi::c_void,
6303        *mut core::ffi::c_void,
6304        *mut core::ffi::c_void,
6305    ) -> windows_core::HRESULT,
6306}
6307pub trait ICoreWebView2ClientCertificateRequestedEventHandler_Impl:
6308    windows_core::IUnknownImpl
6309{
6310    fn Invoke(
6311        &self,
6312        sender: windows_core::Ref<'_, ICoreWebView2>,
6313        args: windows_core::Ref<'_, ICoreWebView2ClientCertificateRequestedEventArgs>,
6314    ) -> windows_core::Result<()>;
6315}
6316impl ICoreWebView2ClientCertificateRequestedEventHandler_Vtbl {
6317    pub const fn new<
6318        Identity: ICoreWebView2ClientCertificateRequestedEventHandler_Impl,
6319        const OFFSET: isize,
6320    >() -> Self {
6321        unsafe extern "system" fn Invoke<
6322            Identity: ICoreWebView2ClientCertificateRequestedEventHandler_Impl,
6323            const OFFSET: isize,
6324        >(
6325            this: *mut core::ffi::c_void,
6326            sender: *mut core::ffi::c_void,
6327            args: *mut core::ffi::c_void,
6328        ) -> windows_core::HRESULT {
6329            unsafe {
6330                let this: &Identity =
6331                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6332                ICoreWebView2ClientCertificateRequestedEventHandler_Impl::Invoke(
6333                    this,
6334                    core::mem::transmute_copy(&sender),
6335                    core::mem::transmute_copy(&args),
6336                )
6337                .into()
6338            }
6339        }
6340        Self {
6341            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6342            Invoke: Invoke::<Identity, OFFSET>,
6343        }
6344    }
6345    pub fn matches(iid: &windows_core::GUID) -> bool {
6346        iid == & < ICoreWebView2ClientCertificateRequestedEventHandler as windows_core::Interface >::IID
6347    }
6348}
6349impl windows_core::RuntimeName for ICoreWebView2ClientCertificateRequestedEventHandler {}
6350windows_core::imp::define_interface!(
6351    ICoreWebView2CompositionController,
6352    ICoreWebView2CompositionController_Vtbl,
6353    0x3df9b733_b9ae_4a15_86b4_eb9ee9826469
6354);
6355windows_core::imp::interface_hierarchy!(ICoreWebView2CompositionController, windows_core::IUnknown);
6356impl ICoreWebView2CompositionController {
6357    pub unsafe fn RootVisualTarget(&self) -> windows_core::Result<windows_core::IUnknown> {
6358        unsafe {
6359            let mut result__ = core::mem::zeroed();
6360            (windows_core::Interface::vtable(self).RootVisualTarget)(
6361                windows_core::Interface::as_raw(self),
6362                &mut result__,
6363            )
6364            .and_then(|| windows_core::Type::from_abi(result__))
6365        }
6366    }
6367    pub unsafe fn SetRootVisualTarget<P0>(&self, target: P0) -> windows_core::Result<()>
6368    where
6369        P0: windows_core::Param<windows_core::IUnknown>,
6370    {
6371        unsafe {
6372            (windows_core::Interface::vtable(self).SetRootVisualTarget)(
6373                windows_core::Interface::as_raw(self),
6374                target.param().abi(),
6375            )
6376            .ok()
6377        }
6378    }
6379    pub unsafe fn SendMouseInput(
6380        &self,
6381        eventkind: COREWEBVIEW2_MOUSE_EVENT_KIND,
6382        virtualkeys: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS,
6383        mousedata: u32,
6384        point: windows::Win32::Foundation::POINT,
6385    ) -> windows_core::Result<()> {
6386        unsafe {
6387            (windows_core::Interface::vtable(self).SendMouseInput)(
6388                windows_core::Interface::as_raw(self),
6389                eventkind,
6390                virtualkeys,
6391                mousedata,
6392                core::mem::transmute(point),
6393            )
6394            .ok()
6395        }
6396    }
6397    pub unsafe fn SendPointerInput<P1>(
6398        &self,
6399        eventkind: COREWEBVIEW2_POINTER_EVENT_KIND,
6400        pointerinfo: P1,
6401    ) -> windows_core::Result<()>
6402    where
6403        P1: windows_core::Param<ICoreWebView2PointerInfo>,
6404    {
6405        unsafe {
6406            (windows_core::Interface::vtable(self).SendPointerInput)(
6407                windows_core::Interface::as_raw(self),
6408                eventkind,
6409                pointerinfo.param().abi(),
6410            )
6411            .ok()
6412        }
6413    }
6414    pub unsafe fn Cursor(
6415        &self,
6416        cursor: *mut windows::Win32::UI::WindowsAndMessaging::HCURSOR,
6417    ) -> windows_core::Result<()> {
6418        unsafe {
6419            (windows_core::Interface::vtable(self).Cursor)(
6420                windows_core::Interface::as_raw(self),
6421                cursor as _,
6422            )
6423            .ok()
6424        }
6425    }
6426    pub unsafe fn SystemCursorId(&self, systemcursorid: *mut u32) -> windows_core::Result<()> {
6427        unsafe {
6428            (windows_core::Interface::vtable(self).SystemCursorId)(
6429                windows_core::Interface::as_raw(self),
6430                systemcursorid as _,
6431            )
6432            .ok()
6433        }
6434    }
6435    pub unsafe fn add_CursorChanged<P0>(
6436        &self,
6437        eventhandler: P0,
6438        token: *mut i64,
6439    ) -> windows_core::Result<()>
6440    where
6441        P0: windows_core::Param<ICoreWebView2CursorChangedEventHandler>,
6442    {
6443        unsafe {
6444            (windows_core::Interface::vtable(self).add_CursorChanged)(
6445                windows_core::Interface::as_raw(self),
6446                eventhandler.param().abi(),
6447                token as _,
6448            )
6449            .ok()
6450        }
6451    }
6452    pub unsafe fn remove_CursorChanged(&self, token: i64) -> windows_core::Result<()> {
6453        unsafe {
6454            (windows_core::Interface::vtable(self).remove_CursorChanged)(
6455                windows_core::Interface::as_raw(self),
6456                token,
6457            )
6458            .ok()
6459        }
6460    }
6461}
6462#[repr(C)]
6463#[doc(hidden)]
6464pub struct ICoreWebView2CompositionController_Vtbl {
6465    pub base__: windows_core::IUnknown_Vtbl,
6466    pub RootVisualTarget: unsafe extern "system" fn(
6467        *mut core::ffi::c_void,
6468        *mut *mut core::ffi::c_void,
6469    ) -> windows_core::HRESULT,
6470    pub SetRootVisualTarget: unsafe extern "system" fn(
6471        *mut core::ffi::c_void,
6472        *mut core::ffi::c_void,
6473    ) -> windows_core::HRESULT,
6474    pub SendMouseInput: unsafe extern "system" fn(
6475        *mut core::ffi::c_void,
6476        COREWEBVIEW2_MOUSE_EVENT_KIND,
6477        COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS,
6478        u32,
6479        windows::Win32::Foundation::POINT,
6480    ) -> windows_core::HRESULT,
6481    pub SendPointerInput: unsafe extern "system" fn(
6482        *mut core::ffi::c_void,
6483        COREWEBVIEW2_POINTER_EVENT_KIND,
6484        *mut core::ffi::c_void,
6485    ) -> windows_core::HRESULT,
6486    pub Cursor: unsafe extern "system" fn(
6487        *mut core::ffi::c_void,
6488        *mut windows::Win32::UI::WindowsAndMessaging::HCURSOR,
6489    ) -> windows_core::HRESULT,
6490    pub SystemCursorId:
6491        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
6492    pub add_CursorChanged: unsafe extern "system" fn(
6493        *mut core::ffi::c_void,
6494        *mut core::ffi::c_void,
6495        *mut i64,
6496    ) -> windows_core::HRESULT,
6497    pub remove_CursorChanged:
6498        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
6499}
6500pub trait ICoreWebView2CompositionController_Impl: windows_core::IUnknownImpl {
6501    fn RootVisualTarget(&self) -> windows_core::Result<windows_core::IUnknown>;
6502    fn SetRootVisualTarget(
6503        &self,
6504        target: windows_core::Ref<'_, windows_core::IUnknown>,
6505    ) -> windows_core::Result<()>;
6506    fn SendMouseInput(
6507        &self,
6508        eventkind: COREWEBVIEW2_MOUSE_EVENT_KIND,
6509        virtualkeys: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS,
6510        mousedata: u32,
6511        point: &windows::Win32::Foundation::POINT,
6512    ) -> windows_core::Result<()>;
6513    fn SendPointerInput(
6514        &self,
6515        eventkind: COREWEBVIEW2_POINTER_EVENT_KIND,
6516        pointerinfo: windows_core::Ref<'_, ICoreWebView2PointerInfo>,
6517    ) -> windows_core::Result<()>;
6518    fn Cursor(
6519        &self,
6520        cursor: *mut windows::Win32::UI::WindowsAndMessaging::HCURSOR,
6521    ) -> windows_core::Result<()>;
6522    fn SystemCursorId(&self, systemcursorid: *mut u32) -> windows_core::Result<()>;
6523    fn add_CursorChanged(
6524        &self,
6525        eventhandler: windows_core::Ref<'_, ICoreWebView2CursorChangedEventHandler>,
6526        token: *mut i64,
6527    ) -> windows_core::Result<()>;
6528    fn remove_CursorChanged(&self, token: i64) -> windows_core::Result<()>;
6529}
6530impl ICoreWebView2CompositionController_Vtbl {
6531    pub const fn new<Identity: ICoreWebView2CompositionController_Impl, const OFFSET: isize>(
6532    ) -> Self {
6533        unsafe extern "system" fn RootVisualTarget<
6534            Identity: ICoreWebView2CompositionController_Impl,
6535            const OFFSET: isize,
6536        >(
6537            this: *mut core::ffi::c_void,
6538            target: *mut *mut core::ffi::c_void,
6539        ) -> windows_core::HRESULT {
6540            unsafe {
6541                let this: &Identity =
6542                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6543                match ICoreWebView2CompositionController_Impl::RootVisualTarget(this) {
6544                    Ok(ok__) => {
6545                        target.write(core::mem::transmute(ok__));
6546                        windows_core::HRESULT(0)
6547                    }
6548                    Err(err) => err.into(),
6549                }
6550            }
6551        }
6552        unsafe extern "system" fn SetRootVisualTarget<
6553            Identity: ICoreWebView2CompositionController_Impl,
6554            const OFFSET: isize,
6555        >(
6556            this: *mut core::ffi::c_void,
6557            target: *mut core::ffi::c_void,
6558        ) -> windows_core::HRESULT {
6559            unsafe {
6560                let this: &Identity =
6561                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6562                ICoreWebView2CompositionController_Impl::SetRootVisualTarget(
6563                    this,
6564                    core::mem::transmute_copy(&target),
6565                )
6566                .into()
6567            }
6568        }
6569        unsafe extern "system" fn SendMouseInput<
6570            Identity: ICoreWebView2CompositionController_Impl,
6571            const OFFSET: isize,
6572        >(
6573            this: *mut core::ffi::c_void,
6574            eventkind: COREWEBVIEW2_MOUSE_EVENT_KIND,
6575            virtualkeys: COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS,
6576            mousedata: u32,
6577            point: windows::Win32::Foundation::POINT,
6578        ) -> windows_core::HRESULT {
6579            unsafe {
6580                let this: &Identity =
6581                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6582                ICoreWebView2CompositionController_Impl::SendMouseInput(
6583                    this,
6584                    core::mem::transmute_copy(&eventkind),
6585                    core::mem::transmute_copy(&virtualkeys),
6586                    core::mem::transmute_copy(&mousedata),
6587                    core::mem::transmute(&point),
6588                )
6589                .into()
6590            }
6591        }
6592        unsafe extern "system" fn SendPointerInput<
6593            Identity: ICoreWebView2CompositionController_Impl,
6594            const OFFSET: isize,
6595        >(
6596            this: *mut core::ffi::c_void,
6597            eventkind: COREWEBVIEW2_POINTER_EVENT_KIND,
6598            pointerinfo: *mut core::ffi::c_void,
6599        ) -> windows_core::HRESULT {
6600            unsafe {
6601                let this: &Identity =
6602                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6603                ICoreWebView2CompositionController_Impl::SendPointerInput(
6604                    this,
6605                    core::mem::transmute_copy(&eventkind),
6606                    core::mem::transmute_copy(&pointerinfo),
6607                )
6608                .into()
6609            }
6610        }
6611        unsafe extern "system" fn Cursor<
6612            Identity: ICoreWebView2CompositionController_Impl,
6613            const OFFSET: isize,
6614        >(
6615            this: *mut core::ffi::c_void,
6616            cursor: *mut windows::Win32::UI::WindowsAndMessaging::HCURSOR,
6617        ) -> windows_core::HRESULT {
6618            unsafe {
6619                let this: &Identity =
6620                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6621                ICoreWebView2CompositionController_Impl::Cursor(
6622                    this,
6623                    core::mem::transmute_copy(&cursor),
6624                )
6625                .into()
6626            }
6627        }
6628        unsafe extern "system" fn SystemCursorId<
6629            Identity: ICoreWebView2CompositionController_Impl,
6630            const OFFSET: isize,
6631        >(
6632            this: *mut core::ffi::c_void,
6633            systemcursorid: *mut u32,
6634        ) -> windows_core::HRESULT {
6635            unsafe {
6636                let this: &Identity =
6637                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6638                ICoreWebView2CompositionController_Impl::SystemCursorId(
6639                    this,
6640                    core::mem::transmute_copy(&systemcursorid),
6641                )
6642                .into()
6643            }
6644        }
6645        unsafe extern "system" fn add_CursorChanged<
6646            Identity: ICoreWebView2CompositionController_Impl,
6647            const OFFSET: isize,
6648        >(
6649            this: *mut core::ffi::c_void,
6650            eventhandler: *mut core::ffi::c_void,
6651            token: *mut i64,
6652        ) -> windows_core::HRESULT {
6653            unsafe {
6654                let this: &Identity =
6655                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6656                ICoreWebView2CompositionController_Impl::add_CursorChanged(
6657                    this,
6658                    core::mem::transmute_copy(&eventhandler),
6659                    core::mem::transmute_copy(&token),
6660                )
6661                .into()
6662            }
6663        }
6664        unsafe extern "system" fn remove_CursorChanged<
6665            Identity: ICoreWebView2CompositionController_Impl,
6666            const OFFSET: isize,
6667        >(
6668            this: *mut core::ffi::c_void,
6669            token: i64,
6670        ) -> windows_core::HRESULT {
6671            unsafe {
6672                let this: &Identity =
6673                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6674                ICoreWebView2CompositionController_Impl::remove_CursorChanged(
6675                    this,
6676                    core::mem::transmute_copy(&token),
6677                )
6678                .into()
6679            }
6680        }
6681        Self {
6682            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6683            RootVisualTarget: RootVisualTarget::<Identity, OFFSET>,
6684            SetRootVisualTarget: SetRootVisualTarget::<Identity, OFFSET>,
6685            SendMouseInput: SendMouseInput::<Identity, OFFSET>,
6686            SendPointerInput: SendPointerInput::<Identity, OFFSET>,
6687            Cursor: Cursor::<Identity, OFFSET>,
6688            SystemCursorId: SystemCursorId::<Identity, OFFSET>,
6689            add_CursorChanged: add_CursorChanged::<Identity, OFFSET>,
6690            remove_CursorChanged: remove_CursorChanged::<Identity, OFFSET>,
6691        }
6692    }
6693    pub fn matches(iid: &windows_core::GUID) -> bool {
6694        iid == &<ICoreWebView2CompositionController as windows_core::Interface>::IID
6695    }
6696}
6697impl windows_core::RuntimeName for ICoreWebView2CompositionController {}
6698windows_core::imp::define_interface!(
6699    ICoreWebView2CompositionController2,
6700    ICoreWebView2CompositionController2_Vtbl,
6701    0x0b6a3d24_49cb_4806_ba20_b5e0734a7b26
6702);
6703impl core::ops::Deref for ICoreWebView2CompositionController2 {
6704    type Target = ICoreWebView2CompositionController;
6705    fn deref(&self) -> &Self::Target {
6706        unsafe { core::mem::transmute(self) }
6707    }
6708}
6709windows_core::imp::interface_hierarchy!(
6710    ICoreWebView2CompositionController2,
6711    windows_core::IUnknown,
6712    ICoreWebView2CompositionController
6713);
6714impl ICoreWebView2CompositionController2 {
6715    pub unsafe fn AutomationProvider(&self) -> windows_core::Result<windows_core::IUnknown> {
6716        unsafe {
6717            let mut result__ = core::mem::zeroed();
6718            (windows_core::Interface::vtable(self).AutomationProvider)(
6719                windows_core::Interface::as_raw(self),
6720                &mut result__,
6721            )
6722            .and_then(|| windows_core::Type::from_abi(result__))
6723        }
6724    }
6725}
6726#[repr(C)]
6727#[doc(hidden)]
6728pub struct ICoreWebView2CompositionController2_Vtbl {
6729    pub base__: ICoreWebView2CompositionController_Vtbl,
6730    pub AutomationProvider: unsafe extern "system" fn(
6731        *mut core::ffi::c_void,
6732        *mut *mut core::ffi::c_void,
6733    ) -> windows_core::HRESULT,
6734}
6735pub trait ICoreWebView2CompositionController2_Impl:
6736    ICoreWebView2CompositionController_Impl
6737{
6738    fn AutomationProvider(&self) -> windows_core::Result<windows_core::IUnknown>;
6739}
6740impl ICoreWebView2CompositionController2_Vtbl {
6741    pub const fn new<Identity: ICoreWebView2CompositionController2_Impl, const OFFSET: isize>(
6742    ) -> Self {
6743        unsafe extern "system" fn AutomationProvider<
6744            Identity: ICoreWebView2CompositionController2_Impl,
6745            const OFFSET: isize,
6746        >(
6747            this: *mut core::ffi::c_void,
6748            value: *mut *mut core::ffi::c_void,
6749        ) -> windows_core::HRESULT {
6750            unsafe {
6751                let this: &Identity =
6752                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6753                match ICoreWebView2CompositionController2_Impl::AutomationProvider(this) {
6754                    Ok(ok__) => {
6755                        value.write(core::mem::transmute(ok__));
6756                        windows_core::HRESULT(0)
6757                    }
6758                    Err(err) => err.into(),
6759                }
6760            }
6761        }
6762        Self {
6763            base__: ICoreWebView2CompositionController_Vtbl::new::<Identity, OFFSET>(),
6764            AutomationProvider: AutomationProvider::<Identity, OFFSET>,
6765        }
6766    }
6767    pub fn matches(iid: &windows_core::GUID) -> bool {
6768        iid == &<ICoreWebView2CompositionController2 as windows_core::Interface>::IID
6769            || iid == &<ICoreWebView2CompositionController as windows_core::Interface>::IID
6770    }
6771}
6772impl windows_core::RuntimeName for ICoreWebView2CompositionController2 {}
6773windows_core::imp::define_interface!(
6774    ICoreWebView2CompositionController3,
6775    ICoreWebView2CompositionController3_Vtbl,
6776    0x9570570e_4d76_4361_9ee1_f04d0dbdfb1e
6777);
6778impl core::ops::Deref for ICoreWebView2CompositionController3 {
6779    type Target = ICoreWebView2CompositionController2;
6780    fn deref(&self) -> &Self::Target {
6781        unsafe { core::mem::transmute(self) }
6782    }
6783}
6784windows_core::imp::interface_hierarchy!(
6785    ICoreWebView2CompositionController3,
6786    windows_core::IUnknown,
6787    ICoreWebView2CompositionController,
6788    ICoreWebView2CompositionController2
6789);
6790impl ICoreWebView2CompositionController3 {
6791    pub unsafe fn DragEnter<P0>(
6792        &self,
6793        dataobject: P0,
6794        keystate: u32,
6795        point: windows::Win32::Foundation::POINT,
6796        effect: *mut u32,
6797    ) -> windows_core::Result<()>
6798    where
6799        P0: windows_core::Param<windows::Win32::System::Com::IDataObject>,
6800    {
6801        unsafe {
6802            (windows_core::Interface::vtable(self).DragEnter)(
6803                windows_core::Interface::as_raw(self),
6804                dataobject.param().abi(),
6805                keystate,
6806                core::mem::transmute(point),
6807                effect as _,
6808            )
6809            .ok()
6810        }
6811    }
6812    pub unsafe fn DragLeave(&self) -> windows_core::Result<()> {
6813        unsafe {
6814            (windows_core::Interface::vtable(self).DragLeave)(windows_core::Interface::as_raw(self))
6815                .ok()
6816        }
6817    }
6818    pub unsafe fn DragOver(
6819        &self,
6820        keystate: u32,
6821        point: windows::Win32::Foundation::POINT,
6822        effect: *mut u32,
6823    ) -> windows_core::Result<()> {
6824        unsafe {
6825            (windows_core::Interface::vtable(self).DragOver)(
6826                windows_core::Interface::as_raw(self),
6827                keystate,
6828                core::mem::transmute(point),
6829                effect as _,
6830            )
6831            .ok()
6832        }
6833    }
6834    pub unsafe fn Drop<P0>(
6835        &self,
6836        dataobject: P0,
6837        keystate: u32,
6838        point: windows::Win32::Foundation::POINT,
6839        effect: *mut u32,
6840    ) -> windows_core::Result<()>
6841    where
6842        P0: windows_core::Param<windows::Win32::System::Com::IDataObject>,
6843    {
6844        unsafe {
6845            (windows_core::Interface::vtable(self).Drop)(
6846                windows_core::Interface::as_raw(self),
6847                dataobject.param().abi(),
6848                keystate,
6849                core::mem::transmute(point),
6850                effect as _,
6851            )
6852            .ok()
6853        }
6854    }
6855}
6856#[repr(C)]
6857#[doc(hidden)]
6858pub struct ICoreWebView2CompositionController3_Vtbl {
6859    pub base__: ICoreWebView2CompositionController2_Vtbl,
6860    pub DragEnter: unsafe extern "system" fn(
6861        *mut core::ffi::c_void,
6862        *mut core::ffi::c_void,
6863        u32,
6864        windows::Win32::Foundation::POINT,
6865        *mut u32,
6866    ) -> windows_core::HRESULT,
6867    pub DragLeave: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
6868    pub DragOver: unsafe extern "system" fn(
6869        *mut core::ffi::c_void,
6870        u32,
6871        windows::Win32::Foundation::POINT,
6872        *mut u32,
6873    ) -> windows_core::HRESULT,
6874    pub Drop: unsafe extern "system" fn(
6875        *mut core::ffi::c_void,
6876        *mut core::ffi::c_void,
6877        u32,
6878        windows::Win32::Foundation::POINT,
6879        *mut u32,
6880    ) -> windows_core::HRESULT,
6881}
6882pub trait ICoreWebView2CompositionController3_Impl:
6883    ICoreWebView2CompositionController2_Impl
6884{
6885    fn DragEnter(
6886        &self,
6887        dataobject: windows_core::Ref<'_, windows::Win32::System::Com::IDataObject>,
6888        keystate: u32,
6889        point: &windows::Win32::Foundation::POINT,
6890        effect: *mut u32,
6891    ) -> windows_core::Result<()>;
6892    fn DragLeave(&self) -> windows_core::Result<()>;
6893    fn DragOver(
6894        &self,
6895        keystate: u32,
6896        point: &windows::Win32::Foundation::POINT,
6897        effect: *mut u32,
6898    ) -> windows_core::Result<()>;
6899    fn Drop(
6900        &self,
6901        dataobject: windows_core::Ref<'_, windows::Win32::System::Com::IDataObject>,
6902        keystate: u32,
6903        point: &windows::Win32::Foundation::POINT,
6904        effect: *mut u32,
6905    ) -> windows_core::Result<()>;
6906}
6907impl ICoreWebView2CompositionController3_Vtbl {
6908    pub const fn new<Identity: ICoreWebView2CompositionController3_Impl, const OFFSET: isize>(
6909    ) -> Self {
6910        unsafe extern "system" fn DragEnter<
6911            Identity: ICoreWebView2CompositionController3_Impl,
6912            const OFFSET: isize,
6913        >(
6914            this: *mut core::ffi::c_void,
6915            dataobject: *mut core::ffi::c_void,
6916            keystate: u32,
6917            point: windows::Win32::Foundation::POINT,
6918            effect: *mut u32,
6919        ) -> windows_core::HRESULT {
6920            unsafe {
6921                let this: &Identity =
6922                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6923                ICoreWebView2CompositionController3_Impl::DragEnter(
6924                    this,
6925                    core::mem::transmute_copy(&dataobject),
6926                    core::mem::transmute_copy(&keystate),
6927                    core::mem::transmute(&point),
6928                    core::mem::transmute_copy(&effect),
6929                )
6930                .into()
6931            }
6932        }
6933        unsafe extern "system" fn DragLeave<
6934            Identity: ICoreWebView2CompositionController3_Impl,
6935            const OFFSET: isize,
6936        >(
6937            this: *mut core::ffi::c_void,
6938        ) -> windows_core::HRESULT {
6939            unsafe {
6940                let this: &Identity =
6941                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6942                ICoreWebView2CompositionController3_Impl::DragLeave(this).into()
6943            }
6944        }
6945        unsafe extern "system" fn DragOver<
6946            Identity: ICoreWebView2CompositionController3_Impl,
6947            const OFFSET: isize,
6948        >(
6949            this: *mut core::ffi::c_void,
6950            keystate: u32,
6951            point: windows::Win32::Foundation::POINT,
6952            effect: *mut u32,
6953        ) -> windows_core::HRESULT {
6954            unsafe {
6955                let this: &Identity =
6956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6957                ICoreWebView2CompositionController3_Impl::DragOver(
6958                    this,
6959                    core::mem::transmute_copy(&keystate),
6960                    core::mem::transmute(&point),
6961                    core::mem::transmute_copy(&effect),
6962                )
6963                .into()
6964            }
6965        }
6966        unsafe extern "system" fn Drop<
6967            Identity: ICoreWebView2CompositionController3_Impl,
6968            const OFFSET: isize,
6969        >(
6970            this: *mut core::ffi::c_void,
6971            dataobject: *mut core::ffi::c_void,
6972            keystate: u32,
6973            point: windows::Win32::Foundation::POINT,
6974            effect: *mut u32,
6975        ) -> windows_core::HRESULT {
6976            unsafe {
6977                let this: &Identity =
6978                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6979                ICoreWebView2CompositionController3_Impl::Drop(
6980                    this,
6981                    core::mem::transmute_copy(&dataobject),
6982                    core::mem::transmute_copy(&keystate),
6983                    core::mem::transmute(&point),
6984                    core::mem::transmute_copy(&effect),
6985                )
6986                .into()
6987            }
6988        }
6989        Self {
6990            base__: ICoreWebView2CompositionController2_Vtbl::new::<Identity, OFFSET>(),
6991            DragEnter: DragEnter::<Identity, OFFSET>,
6992            DragLeave: DragLeave::<Identity, OFFSET>,
6993            DragOver: DragOver::<Identity, OFFSET>,
6994            Drop: Drop::<Identity, OFFSET>,
6995        }
6996    }
6997    pub fn matches(iid: &windows_core::GUID) -> bool {
6998        iid == &<ICoreWebView2CompositionController3 as windows_core::Interface>::IID
6999            || iid == &<ICoreWebView2CompositionController as windows_core::Interface>::IID
7000            || iid == &<ICoreWebView2CompositionController2 as windows_core::Interface>::IID
7001    }
7002}
7003impl windows_core::RuntimeName for ICoreWebView2CompositionController3 {}
7004windows_core::imp::define_interface!(
7005    ICoreWebView2CompositionController4,
7006    ICoreWebView2CompositionController4_Vtbl,
7007    0x7c367b9b_3d2b_450f_9e58_d61a20f486aa
7008);
7009impl core::ops::Deref for ICoreWebView2CompositionController4 {
7010    type Target = ICoreWebView2CompositionController3;
7011    fn deref(&self) -> &Self::Target {
7012        unsafe { core::mem::transmute(self) }
7013    }
7014}
7015windows_core::imp::interface_hierarchy!(
7016    ICoreWebView2CompositionController4,
7017    windows_core::IUnknown,
7018    ICoreWebView2CompositionController,
7019    ICoreWebView2CompositionController2,
7020    ICoreWebView2CompositionController3
7021);
7022impl ICoreWebView2CompositionController4 {
7023    pub unsafe fn GetNonClientRegionAtPoint(
7024        &self,
7025        point: windows::Win32::Foundation::POINT,
7026        value: *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7027    ) -> windows_core::Result<()> {
7028        unsafe {
7029            (windows_core::Interface::vtable(self).GetNonClientRegionAtPoint)(
7030                windows_core::Interface::as_raw(self),
7031                core::mem::transmute(point),
7032                value as _,
7033            )
7034            .ok()
7035        }
7036    }
7037    pub unsafe fn QueryNonClientRegion(
7038        &self,
7039        kind: COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7040    ) -> windows_core::Result<ICoreWebView2RegionRectCollectionView> {
7041        unsafe {
7042            let mut result__ = core::mem::zeroed();
7043            (windows_core::Interface::vtable(self).QueryNonClientRegion)(
7044                windows_core::Interface::as_raw(self),
7045                kind,
7046                &mut result__,
7047            )
7048            .and_then(|| windows_core::Type::from_abi(result__))
7049        }
7050    }
7051    pub unsafe fn add_NonClientRegionChanged<P0>(
7052        &self,
7053        eventhandler: P0,
7054        token: *mut i64,
7055    ) -> windows_core::Result<()>
7056    where
7057        P0: windows_core::Param<ICoreWebView2NonClientRegionChangedEventHandler>,
7058    {
7059        unsafe {
7060            (windows_core::Interface::vtable(self).add_NonClientRegionChanged)(
7061                windows_core::Interface::as_raw(self),
7062                eventhandler.param().abi(),
7063                token as _,
7064            )
7065            .ok()
7066        }
7067    }
7068    pub unsafe fn remove_NonClientRegionChanged(&self, token: i64) -> windows_core::Result<()> {
7069        unsafe {
7070            (windows_core::Interface::vtable(self).remove_NonClientRegionChanged)(
7071                windows_core::Interface::as_raw(self),
7072                token,
7073            )
7074            .ok()
7075        }
7076    }
7077}
7078#[repr(C)]
7079#[doc(hidden)]
7080pub struct ICoreWebView2CompositionController4_Vtbl {
7081    pub base__: ICoreWebView2CompositionController3_Vtbl,
7082    pub GetNonClientRegionAtPoint: unsafe extern "system" fn(
7083        *mut core::ffi::c_void,
7084        windows::Win32::Foundation::POINT,
7085        *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7086    ) -> windows_core::HRESULT,
7087    pub QueryNonClientRegion: unsafe extern "system" fn(
7088        *mut core::ffi::c_void,
7089        COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7090        *mut *mut core::ffi::c_void,
7091    ) -> windows_core::HRESULT,
7092    pub add_NonClientRegionChanged: unsafe extern "system" fn(
7093        *mut core::ffi::c_void,
7094        *mut core::ffi::c_void,
7095        *mut i64,
7096    ) -> windows_core::HRESULT,
7097    pub remove_NonClientRegionChanged:
7098        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
7099}
7100pub trait ICoreWebView2CompositionController4_Impl:
7101    ICoreWebView2CompositionController3_Impl
7102{
7103    fn GetNonClientRegionAtPoint(
7104        &self,
7105        point: &windows::Win32::Foundation::POINT,
7106        value: *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7107    ) -> windows_core::Result<()>;
7108    fn QueryNonClientRegion(
7109        &self,
7110        kind: COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7111    ) -> windows_core::Result<ICoreWebView2RegionRectCollectionView>;
7112    fn add_NonClientRegionChanged(
7113        &self,
7114        eventhandler: windows_core::Ref<'_, ICoreWebView2NonClientRegionChangedEventHandler>,
7115        token: *mut i64,
7116    ) -> windows_core::Result<()>;
7117    fn remove_NonClientRegionChanged(&self, token: i64) -> windows_core::Result<()>;
7118}
7119impl ICoreWebView2CompositionController4_Vtbl {
7120    pub const fn new<Identity: ICoreWebView2CompositionController4_Impl, const OFFSET: isize>(
7121    ) -> Self {
7122        unsafe extern "system" fn GetNonClientRegionAtPoint<
7123            Identity: ICoreWebView2CompositionController4_Impl,
7124            const OFFSET: isize,
7125        >(
7126            this: *mut core::ffi::c_void,
7127            point: windows::Win32::Foundation::POINT,
7128            value: *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7129        ) -> windows_core::HRESULT {
7130            unsafe {
7131                let this: &Identity =
7132                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7133                ICoreWebView2CompositionController4_Impl::GetNonClientRegionAtPoint(
7134                    this,
7135                    core::mem::transmute(&point),
7136                    core::mem::transmute_copy(&value),
7137                )
7138                .into()
7139            }
7140        }
7141        unsafe extern "system" fn QueryNonClientRegion<
7142            Identity: ICoreWebView2CompositionController4_Impl,
7143            const OFFSET: isize,
7144        >(
7145            this: *mut core::ffi::c_void,
7146            kind: COREWEBVIEW2_NON_CLIENT_REGION_KIND,
7147            rects: *mut *mut core::ffi::c_void,
7148        ) -> windows_core::HRESULT {
7149            unsafe {
7150                let this: &Identity =
7151                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7152                match ICoreWebView2CompositionController4_Impl::QueryNonClientRegion(
7153                    this,
7154                    core::mem::transmute_copy(&kind),
7155                ) {
7156                    Ok(ok__) => {
7157                        rects.write(core::mem::transmute(ok__));
7158                        windows_core::HRESULT(0)
7159                    }
7160                    Err(err) => err.into(),
7161                }
7162            }
7163        }
7164        unsafe extern "system" fn add_NonClientRegionChanged<
7165            Identity: ICoreWebView2CompositionController4_Impl,
7166            const OFFSET: isize,
7167        >(
7168            this: *mut core::ffi::c_void,
7169            eventhandler: *mut core::ffi::c_void,
7170            token: *mut i64,
7171        ) -> windows_core::HRESULT {
7172            unsafe {
7173                let this: &Identity =
7174                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7175                ICoreWebView2CompositionController4_Impl::add_NonClientRegionChanged(
7176                    this,
7177                    core::mem::transmute_copy(&eventhandler),
7178                    core::mem::transmute_copy(&token),
7179                )
7180                .into()
7181            }
7182        }
7183        unsafe extern "system" fn remove_NonClientRegionChanged<
7184            Identity: ICoreWebView2CompositionController4_Impl,
7185            const OFFSET: isize,
7186        >(
7187            this: *mut core::ffi::c_void,
7188            token: i64,
7189        ) -> windows_core::HRESULT {
7190            unsafe {
7191                let this: &Identity =
7192                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7193                ICoreWebView2CompositionController4_Impl::remove_NonClientRegionChanged(
7194                    this,
7195                    core::mem::transmute_copy(&token),
7196                )
7197                .into()
7198            }
7199        }
7200        Self {
7201            base__: ICoreWebView2CompositionController3_Vtbl::new::<Identity, OFFSET>(),
7202            GetNonClientRegionAtPoint: GetNonClientRegionAtPoint::<Identity, OFFSET>,
7203            QueryNonClientRegion: QueryNonClientRegion::<Identity, OFFSET>,
7204            add_NonClientRegionChanged: add_NonClientRegionChanged::<Identity, OFFSET>,
7205            remove_NonClientRegionChanged: remove_NonClientRegionChanged::<Identity, OFFSET>,
7206        }
7207    }
7208    pub fn matches(iid: &windows_core::GUID) -> bool {
7209        iid == &<ICoreWebView2CompositionController4 as windows_core::Interface>::IID
7210            || iid == &<ICoreWebView2CompositionController as windows_core::Interface>::IID
7211            || iid == &<ICoreWebView2CompositionController2 as windows_core::Interface>::IID
7212            || iid == &<ICoreWebView2CompositionController3 as windows_core::Interface>::IID
7213    }
7214}
7215impl windows_core::RuntimeName for ICoreWebView2CompositionController4 {}
7216windows_core::imp::define_interface!(
7217    ICoreWebView2ContainsFullScreenElementChangedEventHandler,
7218    ICoreWebView2ContainsFullScreenElementChangedEventHandler_Vtbl,
7219    0xe45d98b1_afef_45be_8baf_6c7728867f73
7220);
7221windows_core::imp::interface_hierarchy!(
7222    ICoreWebView2ContainsFullScreenElementChangedEventHandler,
7223    windows_core::IUnknown
7224);
7225impl ICoreWebView2ContainsFullScreenElementChangedEventHandler {
7226    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
7227    where
7228        P0: windows_core::Param<ICoreWebView2>,
7229        P1: windows_core::Param<windows_core::IUnknown>,
7230    {
7231        unsafe {
7232            (windows_core::Interface::vtable(self).Invoke)(
7233                windows_core::Interface::as_raw(self),
7234                sender.param().abi(),
7235                args.param().abi(),
7236            )
7237            .ok()
7238        }
7239    }
7240}
7241#[repr(C)]
7242#[doc(hidden)]
7243pub struct ICoreWebView2ContainsFullScreenElementChangedEventHandler_Vtbl {
7244    pub base__: windows_core::IUnknown_Vtbl,
7245    pub Invoke: unsafe extern "system" fn(
7246        *mut core::ffi::c_void,
7247        *mut core::ffi::c_void,
7248        *mut core::ffi::c_void,
7249    ) -> windows_core::HRESULT,
7250}
7251pub trait ICoreWebView2ContainsFullScreenElementChangedEventHandler_Impl:
7252    windows_core::IUnknownImpl
7253{
7254    fn Invoke(
7255        &self,
7256        sender: windows_core::Ref<'_, ICoreWebView2>,
7257        args: windows_core::Ref<'_, windows_core::IUnknown>,
7258    ) -> windows_core::Result<()>;
7259}
7260impl ICoreWebView2ContainsFullScreenElementChangedEventHandler_Vtbl {
7261    pub const fn new<
7262        Identity: ICoreWebView2ContainsFullScreenElementChangedEventHandler_Impl,
7263        const OFFSET: isize,
7264    >() -> Self {
7265        unsafe extern "system" fn Invoke<
7266            Identity: ICoreWebView2ContainsFullScreenElementChangedEventHandler_Impl,
7267            const OFFSET: isize,
7268        >(
7269            this: *mut core::ffi::c_void,
7270            sender: *mut core::ffi::c_void,
7271            args: *mut core::ffi::c_void,
7272        ) -> windows_core::HRESULT {
7273            unsafe {
7274                let this: &Identity =
7275                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7276                ICoreWebView2ContainsFullScreenElementChangedEventHandler_Impl::Invoke(
7277                    this,
7278                    core::mem::transmute_copy(&sender),
7279                    core::mem::transmute_copy(&args),
7280                )
7281                .into()
7282            }
7283        }
7284        Self {
7285            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7286            Invoke: Invoke::<Identity, OFFSET>,
7287        }
7288    }
7289    pub fn matches(iid: &windows_core::GUID) -> bool {
7290        iid == & < ICoreWebView2ContainsFullScreenElementChangedEventHandler as windows_core::Interface >::IID
7291    }
7292}
7293impl windows_core::RuntimeName for ICoreWebView2ContainsFullScreenElementChangedEventHandler {}
7294windows_core::imp::define_interface!(
7295    ICoreWebView2ContentLoadingEventArgs,
7296    ICoreWebView2ContentLoadingEventArgs_Vtbl,
7297    0x0c8a1275_9b6b_4901_87ad_70df25bafa6e
7298);
7299windows_core::imp::interface_hierarchy!(
7300    ICoreWebView2ContentLoadingEventArgs,
7301    windows_core::IUnknown
7302);
7303impl ICoreWebView2ContentLoadingEventArgs {
7304    pub unsafe fn IsErrorPage(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
7305        unsafe {
7306            (windows_core::Interface::vtable(self).IsErrorPage)(
7307                windows_core::Interface::as_raw(self),
7308                value as _,
7309            )
7310            .ok()
7311        }
7312    }
7313    pub unsafe fn NavigationId(&self, value: *mut u64) -> windows_core::Result<()> {
7314        unsafe {
7315            (windows_core::Interface::vtable(self).NavigationId)(
7316                windows_core::Interface::as_raw(self),
7317                value as _,
7318            )
7319            .ok()
7320        }
7321    }
7322}
7323#[repr(C)]
7324#[doc(hidden)]
7325pub struct ICoreWebView2ContentLoadingEventArgs_Vtbl {
7326    pub base__: windows_core::IUnknown_Vtbl,
7327    pub IsErrorPage: unsafe extern "system" fn(
7328        *mut core::ffi::c_void,
7329        *mut windows_core::BOOL,
7330    ) -> windows_core::HRESULT,
7331    pub NavigationId:
7332        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
7333}
7334pub trait ICoreWebView2ContentLoadingEventArgs_Impl: windows_core::IUnknownImpl {
7335    fn IsErrorPage(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
7336    fn NavigationId(&self, value: *mut u64) -> windows_core::Result<()>;
7337}
7338impl ICoreWebView2ContentLoadingEventArgs_Vtbl {
7339    pub const fn new<Identity: ICoreWebView2ContentLoadingEventArgs_Impl, const OFFSET: isize>(
7340    ) -> Self {
7341        unsafe extern "system" fn IsErrorPage<
7342            Identity: ICoreWebView2ContentLoadingEventArgs_Impl,
7343            const OFFSET: isize,
7344        >(
7345            this: *mut core::ffi::c_void,
7346            value: *mut windows_core::BOOL,
7347        ) -> windows_core::HRESULT {
7348            unsafe {
7349                let this: &Identity =
7350                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7351                ICoreWebView2ContentLoadingEventArgs_Impl::IsErrorPage(
7352                    this,
7353                    core::mem::transmute_copy(&value),
7354                )
7355                .into()
7356            }
7357        }
7358        unsafe extern "system" fn NavigationId<
7359            Identity: ICoreWebView2ContentLoadingEventArgs_Impl,
7360            const OFFSET: isize,
7361        >(
7362            this: *mut core::ffi::c_void,
7363            value: *mut u64,
7364        ) -> windows_core::HRESULT {
7365            unsafe {
7366                let this: &Identity =
7367                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7368                ICoreWebView2ContentLoadingEventArgs_Impl::NavigationId(
7369                    this,
7370                    core::mem::transmute_copy(&value),
7371                )
7372                .into()
7373            }
7374        }
7375        Self {
7376            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7377            IsErrorPage: IsErrorPage::<Identity, OFFSET>,
7378            NavigationId: NavigationId::<Identity, OFFSET>,
7379        }
7380    }
7381    pub fn matches(iid: &windows_core::GUID) -> bool {
7382        iid == &<ICoreWebView2ContentLoadingEventArgs as windows_core::Interface>::IID
7383    }
7384}
7385impl windows_core::RuntimeName for ICoreWebView2ContentLoadingEventArgs {}
7386windows_core::imp::define_interface!(
7387    ICoreWebView2ContentLoadingEventHandler,
7388    ICoreWebView2ContentLoadingEventHandler_Vtbl,
7389    0x364471e7_f2be_4910_bdba_d72077d51c4b
7390);
7391windows_core::imp::interface_hierarchy!(
7392    ICoreWebView2ContentLoadingEventHandler,
7393    windows_core::IUnknown
7394);
7395impl ICoreWebView2ContentLoadingEventHandler {
7396    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
7397    where
7398        P0: windows_core::Param<ICoreWebView2>,
7399        P1: windows_core::Param<ICoreWebView2ContentLoadingEventArgs>,
7400    {
7401        unsafe {
7402            (windows_core::Interface::vtable(self).Invoke)(
7403                windows_core::Interface::as_raw(self),
7404                sender.param().abi(),
7405                args.param().abi(),
7406            )
7407            .ok()
7408        }
7409    }
7410}
7411#[repr(C)]
7412#[doc(hidden)]
7413pub struct ICoreWebView2ContentLoadingEventHandler_Vtbl {
7414    pub base__: windows_core::IUnknown_Vtbl,
7415    pub Invoke: unsafe extern "system" fn(
7416        *mut core::ffi::c_void,
7417        *mut core::ffi::c_void,
7418        *mut core::ffi::c_void,
7419    ) -> windows_core::HRESULT,
7420}
7421pub trait ICoreWebView2ContentLoadingEventHandler_Impl: windows_core::IUnknownImpl {
7422    fn Invoke(
7423        &self,
7424        sender: windows_core::Ref<'_, ICoreWebView2>,
7425        args: windows_core::Ref<'_, ICoreWebView2ContentLoadingEventArgs>,
7426    ) -> windows_core::Result<()>;
7427}
7428impl ICoreWebView2ContentLoadingEventHandler_Vtbl {
7429    pub const fn new<
7430        Identity: ICoreWebView2ContentLoadingEventHandler_Impl,
7431        const OFFSET: isize,
7432    >() -> Self {
7433        unsafe extern "system" fn Invoke<
7434            Identity: ICoreWebView2ContentLoadingEventHandler_Impl,
7435            const OFFSET: isize,
7436        >(
7437            this: *mut core::ffi::c_void,
7438            sender: *mut core::ffi::c_void,
7439            args: *mut core::ffi::c_void,
7440        ) -> windows_core::HRESULT {
7441            unsafe {
7442                let this: &Identity =
7443                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7444                ICoreWebView2ContentLoadingEventHandler_Impl::Invoke(
7445                    this,
7446                    core::mem::transmute_copy(&sender),
7447                    core::mem::transmute_copy(&args),
7448                )
7449                .into()
7450            }
7451        }
7452        Self {
7453            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7454            Invoke: Invoke::<Identity, OFFSET>,
7455        }
7456    }
7457    pub fn matches(iid: &windows_core::GUID) -> bool {
7458        iid == &<ICoreWebView2ContentLoadingEventHandler as windows_core::Interface>::IID
7459    }
7460}
7461impl windows_core::RuntimeName for ICoreWebView2ContentLoadingEventHandler {}
7462windows_core::imp::define_interface!(
7463    ICoreWebView2ContextMenuItem,
7464    ICoreWebView2ContextMenuItem_Vtbl,
7465    0x7aed49e3_a93f_497a_811c_749c6b6b6c65
7466);
7467windows_core::imp::interface_hierarchy!(ICoreWebView2ContextMenuItem, windows_core::IUnknown);
7468impl ICoreWebView2ContextMenuItem {
7469    pub unsafe fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
7470        unsafe {
7471            (windows_core::Interface::vtable(self).Name)(
7472                windows_core::Interface::as_raw(self),
7473                value as _,
7474            )
7475            .ok()
7476        }
7477    }
7478    pub unsafe fn Label(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
7479        unsafe {
7480            (windows_core::Interface::vtable(self).Label)(
7481                windows_core::Interface::as_raw(self),
7482                value as _,
7483            )
7484            .ok()
7485        }
7486    }
7487    pub unsafe fn CommandId(&self, value: *mut i32) -> windows_core::Result<()> {
7488        unsafe {
7489            (windows_core::Interface::vtable(self).CommandId)(
7490                windows_core::Interface::as_raw(self),
7491                value as _,
7492            )
7493            .ok()
7494        }
7495    }
7496    pub unsafe fn ShortcutKeyDescription(
7497        &self,
7498        value: *mut windows_core::PWSTR,
7499    ) -> windows_core::Result<()> {
7500        unsafe {
7501            (windows_core::Interface::vtable(self).ShortcutKeyDescription)(
7502                windows_core::Interface::as_raw(self),
7503                value as _,
7504            )
7505            .ok()
7506        }
7507    }
7508    pub unsafe fn Icon(&self) -> windows_core::Result<windows::Win32::System::Com::IStream> {
7509        unsafe {
7510            let mut result__ = core::mem::zeroed();
7511            (windows_core::Interface::vtable(self).Icon)(
7512                windows_core::Interface::as_raw(self),
7513                &mut result__,
7514            )
7515            .and_then(|| windows_core::Type::from_abi(result__))
7516        }
7517    }
7518    pub unsafe fn Kind(
7519        &self,
7520        value: *mut COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
7521    ) -> windows_core::Result<()> {
7522        unsafe {
7523            (windows_core::Interface::vtable(self).Kind)(
7524                windows_core::Interface::as_raw(self),
7525                value as _,
7526            )
7527            .ok()
7528        }
7529    }
7530    pub unsafe fn SetIsEnabled(&self, value: bool) -> windows_core::Result<()> {
7531        unsafe {
7532            (windows_core::Interface::vtable(self).SetIsEnabled)(
7533                windows_core::Interface::as_raw(self),
7534                value.into(),
7535            )
7536            .ok()
7537        }
7538    }
7539    pub unsafe fn IsEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
7540        unsafe {
7541            (windows_core::Interface::vtable(self).IsEnabled)(
7542                windows_core::Interface::as_raw(self),
7543                value as _,
7544            )
7545            .ok()
7546        }
7547    }
7548    pub unsafe fn SetIsChecked(&self, value: bool) -> windows_core::Result<()> {
7549        unsafe {
7550            (windows_core::Interface::vtable(self).SetIsChecked)(
7551                windows_core::Interface::as_raw(self),
7552                value.into(),
7553            )
7554            .ok()
7555        }
7556    }
7557    pub unsafe fn IsChecked(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
7558        unsafe {
7559            (windows_core::Interface::vtable(self).IsChecked)(
7560                windows_core::Interface::as_raw(self),
7561                value as _,
7562            )
7563            .ok()
7564        }
7565    }
7566    pub unsafe fn Children(&self) -> windows_core::Result<ICoreWebView2ContextMenuItemCollection> {
7567        unsafe {
7568            let mut result__ = core::mem::zeroed();
7569            (windows_core::Interface::vtable(self).Children)(
7570                windows_core::Interface::as_raw(self),
7571                &mut result__,
7572            )
7573            .and_then(|| windows_core::Type::from_abi(result__))
7574        }
7575    }
7576    pub unsafe fn add_CustomItemSelected<P0>(
7577        &self,
7578        eventhandler: P0,
7579        token: *mut i64,
7580    ) -> windows_core::Result<()>
7581    where
7582        P0: windows_core::Param<ICoreWebView2CustomItemSelectedEventHandler>,
7583    {
7584        unsafe {
7585            (windows_core::Interface::vtable(self).add_CustomItemSelected)(
7586                windows_core::Interface::as_raw(self),
7587                eventhandler.param().abi(),
7588                token as _,
7589            )
7590            .ok()
7591        }
7592    }
7593    pub unsafe fn remove_CustomItemSelected(&self, token: i64) -> windows_core::Result<()> {
7594        unsafe {
7595            (windows_core::Interface::vtable(self).remove_CustomItemSelected)(
7596                windows_core::Interface::as_raw(self),
7597                token,
7598            )
7599            .ok()
7600        }
7601    }
7602}
7603#[repr(C)]
7604#[doc(hidden)]
7605pub struct ICoreWebView2ContextMenuItem_Vtbl {
7606    pub base__: windows_core::IUnknown_Vtbl,
7607    pub Name: unsafe extern "system" fn(
7608        *mut core::ffi::c_void,
7609        *mut windows_core::PWSTR,
7610    ) -> windows_core::HRESULT,
7611    pub Label: unsafe extern "system" fn(
7612        *mut core::ffi::c_void,
7613        *mut windows_core::PWSTR,
7614    ) -> windows_core::HRESULT,
7615    pub CommandId:
7616        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
7617    pub ShortcutKeyDescription: unsafe extern "system" fn(
7618        *mut core::ffi::c_void,
7619        *mut windows_core::PWSTR,
7620    ) -> windows_core::HRESULT,
7621    pub Icon: unsafe extern "system" fn(
7622        *mut core::ffi::c_void,
7623        *mut *mut core::ffi::c_void,
7624    ) -> windows_core::HRESULT,
7625    pub Kind: unsafe extern "system" fn(
7626        *mut core::ffi::c_void,
7627        *mut COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
7628    ) -> windows_core::HRESULT,
7629    pub SetIsEnabled: unsafe extern "system" fn(
7630        *mut core::ffi::c_void,
7631        windows_core::BOOL,
7632    ) -> windows_core::HRESULT,
7633    pub IsEnabled: unsafe extern "system" fn(
7634        *mut core::ffi::c_void,
7635        *mut windows_core::BOOL,
7636    ) -> windows_core::HRESULT,
7637    pub SetIsChecked: unsafe extern "system" fn(
7638        *mut core::ffi::c_void,
7639        windows_core::BOOL,
7640    ) -> windows_core::HRESULT,
7641    pub IsChecked: unsafe extern "system" fn(
7642        *mut core::ffi::c_void,
7643        *mut windows_core::BOOL,
7644    ) -> windows_core::HRESULT,
7645    pub Children: unsafe extern "system" fn(
7646        *mut core::ffi::c_void,
7647        *mut *mut core::ffi::c_void,
7648    ) -> windows_core::HRESULT,
7649    pub add_CustomItemSelected: unsafe extern "system" fn(
7650        *mut core::ffi::c_void,
7651        *mut core::ffi::c_void,
7652        *mut i64,
7653    ) -> windows_core::HRESULT,
7654    pub remove_CustomItemSelected:
7655        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
7656}
7657pub trait ICoreWebView2ContextMenuItem_Impl: windows_core::IUnknownImpl {
7658    fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
7659    fn Label(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
7660    fn CommandId(&self, value: *mut i32) -> windows_core::Result<()>;
7661    fn ShortcutKeyDescription(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
7662    fn Icon(&self) -> windows_core::Result<windows::Win32::System::Com::IStream>;
7663    fn Kind(&self, value: *mut COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND) -> windows_core::Result<()>;
7664    fn SetIsEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
7665    fn IsEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
7666    fn SetIsChecked(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
7667    fn IsChecked(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
7668    fn Children(&self) -> windows_core::Result<ICoreWebView2ContextMenuItemCollection>;
7669    fn add_CustomItemSelected(
7670        &self,
7671        eventhandler: windows_core::Ref<'_, ICoreWebView2CustomItemSelectedEventHandler>,
7672        token: *mut i64,
7673    ) -> windows_core::Result<()>;
7674    fn remove_CustomItemSelected(&self, token: i64) -> windows_core::Result<()>;
7675}
7676impl ICoreWebView2ContextMenuItem_Vtbl {
7677    pub const fn new<Identity: ICoreWebView2ContextMenuItem_Impl, const OFFSET: isize>() -> Self {
7678        unsafe extern "system" fn Name<
7679            Identity: ICoreWebView2ContextMenuItem_Impl,
7680            const OFFSET: isize,
7681        >(
7682            this: *mut core::ffi::c_void,
7683            value: *mut windows_core::PWSTR,
7684        ) -> windows_core::HRESULT {
7685            unsafe {
7686                let this: &Identity =
7687                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7688                ICoreWebView2ContextMenuItem_Impl::Name(this, core::mem::transmute_copy(&value))
7689                    .into()
7690            }
7691        }
7692        unsafe extern "system" fn Label<
7693            Identity: ICoreWebView2ContextMenuItem_Impl,
7694            const OFFSET: isize,
7695        >(
7696            this: *mut core::ffi::c_void,
7697            value: *mut windows_core::PWSTR,
7698        ) -> windows_core::HRESULT {
7699            unsafe {
7700                let this: &Identity =
7701                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7702                ICoreWebView2ContextMenuItem_Impl::Label(this, core::mem::transmute_copy(&value))
7703                    .into()
7704            }
7705        }
7706        unsafe extern "system" fn CommandId<
7707            Identity: ICoreWebView2ContextMenuItem_Impl,
7708            const OFFSET: isize,
7709        >(
7710            this: *mut core::ffi::c_void,
7711            value: *mut i32,
7712        ) -> windows_core::HRESULT {
7713            unsafe {
7714                let this: &Identity =
7715                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7716                ICoreWebView2ContextMenuItem_Impl::CommandId(
7717                    this,
7718                    core::mem::transmute_copy(&value),
7719                )
7720                .into()
7721            }
7722        }
7723        unsafe extern "system" fn ShortcutKeyDescription<
7724            Identity: ICoreWebView2ContextMenuItem_Impl,
7725            const OFFSET: isize,
7726        >(
7727            this: *mut core::ffi::c_void,
7728            value: *mut windows_core::PWSTR,
7729        ) -> windows_core::HRESULT {
7730            unsafe {
7731                let this: &Identity =
7732                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7733                ICoreWebView2ContextMenuItem_Impl::ShortcutKeyDescription(
7734                    this,
7735                    core::mem::transmute_copy(&value),
7736                )
7737                .into()
7738            }
7739        }
7740        unsafe extern "system" fn Icon<
7741            Identity: ICoreWebView2ContextMenuItem_Impl,
7742            const OFFSET: isize,
7743        >(
7744            this: *mut core::ffi::c_void,
7745            value: *mut *mut core::ffi::c_void,
7746        ) -> windows_core::HRESULT {
7747            unsafe {
7748                let this: &Identity =
7749                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7750                match ICoreWebView2ContextMenuItem_Impl::Icon(this) {
7751                    Ok(ok__) => {
7752                        value.write(core::mem::transmute(ok__));
7753                        windows_core::HRESULT(0)
7754                    }
7755                    Err(err) => err.into(),
7756                }
7757            }
7758        }
7759        unsafe extern "system" fn Kind<
7760            Identity: ICoreWebView2ContextMenuItem_Impl,
7761            const OFFSET: isize,
7762        >(
7763            this: *mut core::ffi::c_void,
7764            value: *mut COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
7765        ) -> windows_core::HRESULT {
7766            unsafe {
7767                let this: &Identity =
7768                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7769                ICoreWebView2ContextMenuItem_Impl::Kind(this, core::mem::transmute_copy(&value))
7770                    .into()
7771            }
7772        }
7773        unsafe extern "system" fn SetIsEnabled<
7774            Identity: ICoreWebView2ContextMenuItem_Impl,
7775            const OFFSET: isize,
7776        >(
7777            this: *mut core::ffi::c_void,
7778            value: windows_core::BOOL,
7779        ) -> windows_core::HRESULT {
7780            unsafe {
7781                let this: &Identity =
7782                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7783                ICoreWebView2ContextMenuItem_Impl::SetIsEnabled(
7784                    this,
7785                    core::mem::transmute_copy(&value),
7786                )
7787                .into()
7788            }
7789        }
7790        unsafe extern "system" fn IsEnabled<
7791            Identity: ICoreWebView2ContextMenuItem_Impl,
7792            const OFFSET: isize,
7793        >(
7794            this: *mut core::ffi::c_void,
7795            value: *mut windows_core::BOOL,
7796        ) -> windows_core::HRESULT {
7797            unsafe {
7798                let this: &Identity =
7799                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7800                ICoreWebView2ContextMenuItem_Impl::IsEnabled(
7801                    this,
7802                    core::mem::transmute_copy(&value),
7803                )
7804                .into()
7805            }
7806        }
7807        unsafe extern "system" fn SetIsChecked<
7808            Identity: ICoreWebView2ContextMenuItem_Impl,
7809            const OFFSET: isize,
7810        >(
7811            this: *mut core::ffi::c_void,
7812            value: windows_core::BOOL,
7813        ) -> windows_core::HRESULT {
7814            unsafe {
7815                let this: &Identity =
7816                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7817                ICoreWebView2ContextMenuItem_Impl::SetIsChecked(
7818                    this,
7819                    core::mem::transmute_copy(&value),
7820                )
7821                .into()
7822            }
7823        }
7824        unsafe extern "system" fn IsChecked<
7825            Identity: ICoreWebView2ContextMenuItem_Impl,
7826            const OFFSET: isize,
7827        >(
7828            this: *mut core::ffi::c_void,
7829            value: *mut windows_core::BOOL,
7830        ) -> windows_core::HRESULT {
7831            unsafe {
7832                let this: &Identity =
7833                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7834                ICoreWebView2ContextMenuItem_Impl::IsChecked(
7835                    this,
7836                    core::mem::transmute_copy(&value),
7837                )
7838                .into()
7839            }
7840        }
7841        unsafe extern "system" fn Children<
7842            Identity: ICoreWebView2ContextMenuItem_Impl,
7843            const OFFSET: isize,
7844        >(
7845            this: *mut core::ffi::c_void,
7846            value: *mut *mut core::ffi::c_void,
7847        ) -> windows_core::HRESULT {
7848            unsafe {
7849                let this: &Identity =
7850                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7851                match ICoreWebView2ContextMenuItem_Impl::Children(this) {
7852                    Ok(ok__) => {
7853                        value.write(core::mem::transmute(ok__));
7854                        windows_core::HRESULT(0)
7855                    }
7856                    Err(err) => err.into(),
7857                }
7858            }
7859        }
7860        unsafe extern "system" fn add_CustomItemSelected<
7861            Identity: ICoreWebView2ContextMenuItem_Impl,
7862            const OFFSET: isize,
7863        >(
7864            this: *mut core::ffi::c_void,
7865            eventhandler: *mut core::ffi::c_void,
7866            token: *mut i64,
7867        ) -> windows_core::HRESULT {
7868            unsafe {
7869                let this: &Identity =
7870                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7871                ICoreWebView2ContextMenuItem_Impl::add_CustomItemSelected(
7872                    this,
7873                    core::mem::transmute_copy(&eventhandler),
7874                    core::mem::transmute_copy(&token),
7875                )
7876                .into()
7877            }
7878        }
7879        unsafe extern "system" fn remove_CustomItemSelected<
7880            Identity: ICoreWebView2ContextMenuItem_Impl,
7881            const OFFSET: isize,
7882        >(
7883            this: *mut core::ffi::c_void,
7884            token: i64,
7885        ) -> windows_core::HRESULT {
7886            unsafe {
7887                let this: &Identity =
7888                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7889                ICoreWebView2ContextMenuItem_Impl::remove_CustomItemSelected(
7890                    this,
7891                    core::mem::transmute_copy(&token),
7892                )
7893                .into()
7894            }
7895        }
7896        Self {
7897            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7898            Name: Name::<Identity, OFFSET>,
7899            Label: Label::<Identity, OFFSET>,
7900            CommandId: CommandId::<Identity, OFFSET>,
7901            ShortcutKeyDescription: ShortcutKeyDescription::<Identity, OFFSET>,
7902            Icon: Icon::<Identity, OFFSET>,
7903            Kind: Kind::<Identity, OFFSET>,
7904            SetIsEnabled: SetIsEnabled::<Identity, OFFSET>,
7905            IsEnabled: IsEnabled::<Identity, OFFSET>,
7906            SetIsChecked: SetIsChecked::<Identity, OFFSET>,
7907            IsChecked: IsChecked::<Identity, OFFSET>,
7908            Children: Children::<Identity, OFFSET>,
7909            add_CustomItemSelected: add_CustomItemSelected::<Identity, OFFSET>,
7910            remove_CustomItemSelected: remove_CustomItemSelected::<Identity, OFFSET>,
7911        }
7912    }
7913    pub fn matches(iid: &windows_core::GUID) -> bool {
7914        iid == &<ICoreWebView2ContextMenuItem as windows_core::Interface>::IID
7915    }
7916}
7917impl windows_core::RuntimeName for ICoreWebView2ContextMenuItem {}
7918windows_core::imp::define_interface!(
7919    ICoreWebView2ContextMenuItemCollection,
7920    ICoreWebView2ContextMenuItemCollection_Vtbl,
7921    0xf562a2f5_c415_45cf_b909_d4b7c1e276d3
7922);
7923windows_core::imp::interface_hierarchy!(
7924    ICoreWebView2ContextMenuItemCollection,
7925    windows_core::IUnknown
7926);
7927impl ICoreWebView2ContextMenuItemCollection {
7928    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
7929        unsafe {
7930            (windows_core::Interface::vtable(self).Count)(
7931                windows_core::Interface::as_raw(self),
7932                value as _,
7933            )
7934            .ok()
7935        }
7936    }
7937    pub unsafe fn GetValueAtIndex(
7938        &self,
7939        index: u32,
7940    ) -> windows_core::Result<ICoreWebView2ContextMenuItem> {
7941        unsafe {
7942            let mut result__ = core::mem::zeroed();
7943            (windows_core::Interface::vtable(self).GetValueAtIndex)(
7944                windows_core::Interface::as_raw(self),
7945                index,
7946                &mut result__,
7947            )
7948            .and_then(|| windows_core::Type::from_abi(result__))
7949        }
7950    }
7951    pub unsafe fn RemoveValueAtIndex(&self, index: u32) -> windows_core::Result<()> {
7952        unsafe {
7953            (windows_core::Interface::vtable(self).RemoveValueAtIndex)(
7954                windows_core::Interface::as_raw(self),
7955                index,
7956            )
7957            .ok()
7958        }
7959    }
7960    pub unsafe fn InsertValueAtIndex<P1>(&self, index: u32, value: P1) -> windows_core::Result<()>
7961    where
7962        P1: windows_core::Param<ICoreWebView2ContextMenuItem>,
7963    {
7964        unsafe {
7965            (windows_core::Interface::vtable(self).InsertValueAtIndex)(
7966                windows_core::Interface::as_raw(self),
7967                index,
7968                value.param().abi(),
7969            )
7970            .ok()
7971        }
7972    }
7973}
7974#[repr(C)]
7975#[doc(hidden)]
7976pub struct ICoreWebView2ContextMenuItemCollection_Vtbl {
7977    pub base__: windows_core::IUnknown_Vtbl,
7978    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
7979    pub GetValueAtIndex: unsafe extern "system" fn(
7980        *mut core::ffi::c_void,
7981        u32,
7982        *mut *mut core::ffi::c_void,
7983    ) -> windows_core::HRESULT,
7984    pub RemoveValueAtIndex:
7985        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
7986    pub InsertValueAtIndex: unsafe extern "system" fn(
7987        *mut core::ffi::c_void,
7988        u32,
7989        *mut core::ffi::c_void,
7990    ) -> windows_core::HRESULT,
7991}
7992pub trait ICoreWebView2ContextMenuItemCollection_Impl: windows_core::IUnknownImpl {
7993    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
7994    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2ContextMenuItem>;
7995    fn RemoveValueAtIndex(&self, index: u32) -> windows_core::Result<()>;
7996    fn InsertValueAtIndex(
7997        &self,
7998        index: u32,
7999        value: windows_core::Ref<'_, ICoreWebView2ContextMenuItem>,
8000    ) -> windows_core::Result<()>;
8001}
8002impl ICoreWebView2ContextMenuItemCollection_Vtbl {
8003    pub const fn new<Identity: ICoreWebView2ContextMenuItemCollection_Impl, const OFFSET: isize>(
8004    ) -> Self {
8005        unsafe extern "system" fn Count<
8006            Identity: ICoreWebView2ContextMenuItemCollection_Impl,
8007            const OFFSET: isize,
8008        >(
8009            this: *mut core::ffi::c_void,
8010            value: *mut u32,
8011        ) -> windows_core::HRESULT {
8012            unsafe {
8013                let this: &Identity =
8014                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8015                ICoreWebView2ContextMenuItemCollection_Impl::Count(
8016                    this,
8017                    core::mem::transmute_copy(&value),
8018                )
8019                .into()
8020            }
8021        }
8022        unsafe extern "system" fn GetValueAtIndex<
8023            Identity: ICoreWebView2ContextMenuItemCollection_Impl,
8024            const OFFSET: isize,
8025        >(
8026            this: *mut core::ffi::c_void,
8027            index: u32,
8028            value: *mut *mut core::ffi::c_void,
8029        ) -> windows_core::HRESULT {
8030            unsafe {
8031                let this: &Identity =
8032                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8033                match ICoreWebView2ContextMenuItemCollection_Impl::GetValueAtIndex(
8034                    this,
8035                    core::mem::transmute_copy(&index),
8036                ) {
8037                    Ok(ok__) => {
8038                        value.write(core::mem::transmute(ok__));
8039                        windows_core::HRESULT(0)
8040                    }
8041                    Err(err) => err.into(),
8042                }
8043            }
8044        }
8045        unsafe extern "system" fn RemoveValueAtIndex<
8046            Identity: ICoreWebView2ContextMenuItemCollection_Impl,
8047            const OFFSET: isize,
8048        >(
8049            this: *mut core::ffi::c_void,
8050            index: u32,
8051        ) -> windows_core::HRESULT {
8052            unsafe {
8053                let this: &Identity =
8054                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8055                ICoreWebView2ContextMenuItemCollection_Impl::RemoveValueAtIndex(
8056                    this,
8057                    core::mem::transmute_copy(&index),
8058                )
8059                .into()
8060            }
8061        }
8062        unsafe extern "system" fn InsertValueAtIndex<
8063            Identity: ICoreWebView2ContextMenuItemCollection_Impl,
8064            const OFFSET: isize,
8065        >(
8066            this: *mut core::ffi::c_void,
8067            index: u32,
8068            value: *mut core::ffi::c_void,
8069        ) -> windows_core::HRESULT {
8070            unsafe {
8071                let this: &Identity =
8072                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8073                ICoreWebView2ContextMenuItemCollection_Impl::InsertValueAtIndex(
8074                    this,
8075                    core::mem::transmute_copy(&index),
8076                    core::mem::transmute_copy(&value),
8077                )
8078                .into()
8079            }
8080        }
8081        Self {
8082            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8083            Count: Count::<Identity, OFFSET>,
8084            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
8085            RemoveValueAtIndex: RemoveValueAtIndex::<Identity, OFFSET>,
8086            InsertValueAtIndex: InsertValueAtIndex::<Identity, OFFSET>,
8087        }
8088    }
8089    pub fn matches(iid: &windows_core::GUID) -> bool {
8090        iid == &<ICoreWebView2ContextMenuItemCollection as windows_core::Interface>::IID
8091    }
8092}
8093impl windows_core::RuntimeName for ICoreWebView2ContextMenuItemCollection {}
8094windows_core::imp::define_interface!(
8095    ICoreWebView2ContextMenuRequestedEventArgs,
8096    ICoreWebView2ContextMenuRequestedEventArgs_Vtbl,
8097    0xa1d309ee_c03f_11eb_8529_0242ac130003
8098);
8099windows_core::imp::interface_hierarchy!(
8100    ICoreWebView2ContextMenuRequestedEventArgs,
8101    windows_core::IUnknown
8102);
8103impl ICoreWebView2ContextMenuRequestedEventArgs {
8104    pub unsafe fn MenuItems(&self) -> windows_core::Result<ICoreWebView2ContextMenuItemCollection> {
8105        unsafe {
8106            let mut result__ = core::mem::zeroed();
8107            (windows_core::Interface::vtable(self).MenuItems)(
8108                windows_core::Interface::as_raw(self),
8109                &mut result__,
8110            )
8111            .and_then(|| windows_core::Type::from_abi(result__))
8112        }
8113    }
8114    pub unsafe fn ContextMenuTarget(&self) -> windows_core::Result<ICoreWebView2ContextMenuTarget> {
8115        unsafe {
8116            let mut result__ = core::mem::zeroed();
8117            (windows_core::Interface::vtable(self).ContextMenuTarget)(
8118                windows_core::Interface::as_raw(self),
8119                &mut result__,
8120            )
8121            .and_then(|| windows_core::Type::from_abi(result__))
8122        }
8123    }
8124    pub unsafe fn Location(
8125        &self,
8126        value: *mut windows::Win32::Foundation::POINT,
8127    ) -> windows_core::Result<()> {
8128        unsafe {
8129            (windows_core::Interface::vtable(self).Location)(
8130                windows_core::Interface::as_raw(self),
8131                value as _,
8132            )
8133            .ok()
8134        }
8135    }
8136    pub unsafe fn SetSelectedCommandId(&self, value: i32) -> windows_core::Result<()> {
8137        unsafe {
8138            (windows_core::Interface::vtable(self).SetSelectedCommandId)(
8139                windows_core::Interface::as_raw(self),
8140                value,
8141            )
8142            .ok()
8143        }
8144    }
8145    pub unsafe fn SelectedCommandId(&self, value: *mut i32) -> windows_core::Result<()> {
8146        unsafe {
8147            (windows_core::Interface::vtable(self).SelectedCommandId)(
8148                windows_core::Interface::as_raw(self),
8149                value as _,
8150            )
8151            .ok()
8152        }
8153    }
8154    pub unsafe fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
8155        unsafe {
8156            (windows_core::Interface::vtable(self).SetHandled)(
8157                windows_core::Interface::as_raw(self),
8158                value.into(),
8159            )
8160            .ok()
8161        }
8162    }
8163    pub unsafe fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
8164        unsafe {
8165            (windows_core::Interface::vtable(self).Handled)(
8166                windows_core::Interface::as_raw(self),
8167                value as _,
8168            )
8169            .ok()
8170        }
8171    }
8172    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
8173        unsafe {
8174            let mut result__ = core::mem::zeroed();
8175            (windows_core::Interface::vtable(self).GetDeferral)(
8176                windows_core::Interface::as_raw(self),
8177                &mut result__,
8178            )
8179            .and_then(|| windows_core::Type::from_abi(result__))
8180        }
8181    }
8182}
8183#[repr(C)]
8184#[doc(hidden)]
8185pub struct ICoreWebView2ContextMenuRequestedEventArgs_Vtbl {
8186    pub base__: windows_core::IUnknown_Vtbl,
8187    pub MenuItems: unsafe extern "system" fn(
8188        *mut core::ffi::c_void,
8189        *mut *mut core::ffi::c_void,
8190    ) -> windows_core::HRESULT,
8191    pub ContextMenuTarget: unsafe extern "system" fn(
8192        *mut core::ffi::c_void,
8193        *mut *mut core::ffi::c_void,
8194    ) -> windows_core::HRESULT,
8195    pub Location: unsafe extern "system" fn(
8196        *mut core::ffi::c_void,
8197        *mut windows::Win32::Foundation::POINT,
8198    ) -> windows_core::HRESULT,
8199    pub SetSelectedCommandId:
8200        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
8201    pub SelectedCommandId:
8202        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
8203    pub SetHandled: unsafe extern "system" fn(
8204        *mut core::ffi::c_void,
8205        windows_core::BOOL,
8206    ) -> windows_core::HRESULT,
8207    pub Handled: unsafe extern "system" fn(
8208        *mut core::ffi::c_void,
8209        *mut windows_core::BOOL,
8210    ) -> windows_core::HRESULT,
8211    pub GetDeferral: unsafe extern "system" fn(
8212        *mut core::ffi::c_void,
8213        *mut *mut core::ffi::c_void,
8214    ) -> windows_core::HRESULT,
8215}
8216pub trait ICoreWebView2ContextMenuRequestedEventArgs_Impl: windows_core::IUnknownImpl {
8217    fn MenuItems(&self) -> windows_core::Result<ICoreWebView2ContextMenuItemCollection>;
8218    fn ContextMenuTarget(&self) -> windows_core::Result<ICoreWebView2ContextMenuTarget>;
8219    fn Location(&self, value: *mut windows::Win32::Foundation::POINT) -> windows_core::Result<()>;
8220    fn SetSelectedCommandId(&self, value: i32) -> windows_core::Result<()>;
8221    fn SelectedCommandId(&self, value: *mut i32) -> windows_core::Result<()>;
8222    fn SetHandled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
8223    fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8224    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
8225}
8226impl ICoreWebView2ContextMenuRequestedEventArgs_Vtbl {
8227    pub const fn new<
8228        Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8229        const OFFSET: isize,
8230    >() -> Self {
8231        unsafe extern "system" fn MenuItems<
8232            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8233            const OFFSET: isize,
8234        >(
8235            this: *mut core::ffi::c_void,
8236            value: *mut *mut core::ffi::c_void,
8237        ) -> windows_core::HRESULT {
8238            unsafe {
8239                let this: &Identity =
8240                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8241                match ICoreWebView2ContextMenuRequestedEventArgs_Impl::MenuItems(this) {
8242                    Ok(ok__) => {
8243                        value.write(core::mem::transmute(ok__));
8244                        windows_core::HRESULT(0)
8245                    }
8246                    Err(err) => err.into(),
8247                }
8248            }
8249        }
8250        unsafe extern "system" fn ContextMenuTarget<
8251            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8252            const OFFSET: isize,
8253        >(
8254            this: *mut core::ffi::c_void,
8255            value: *mut *mut core::ffi::c_void,
8256        ) -> windows_core::HRESULT {
8257            unsafe {
8258                let this: &Identity =
8259                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8260                match ICoreWebView2ContextMenuRequestedEventArgs_Impl::ContextMenuTarget(this) {
8261                    Ok(ok__) => {
8262                        value.write(core::mem::transmute(ok__));
8263                        windows_core::HRESULT(0)
8264                    }
8265                    Err(err) => err.into(),
8266                }
8267            }
8268        }
8269        unsafe extern "system" fn Location<
8270            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8271            const OFFSET: isize,
8272        >(
8273            this: *mut core::ffi::c_void,
8274            value: *mut windows::Win32::Foundation::POINT,
8275        ) -> windows_core::HRESULT {
8276            unsafe {
8277                let this: &Identity =
8278                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8279                ICoreWebView2ContextMenuRequestedEventArgs_Impl::Location(
8280                    this,
8281                    core::mem::transmute_copy(&value),
8282                )
8283                .into()
8284            }
8285        }
8286        unsafe extern "system" fn SetSelectedCommandId<
8287            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8288            const OFFSET: isize,
8289        >(
8290            this: *mut core::ffi::c_void,
8291            value: i32,
8292        ) -> windows_core::HRESULT {
8293            unsafe {
8294                let this: &Identity =
8295                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8296                ICoreWebView2ContextMenuRequestedEventArgs_Impl::SetSelectedCommandId(
8297                    this,
8298                    core::mem::transmute_copy(&value),
8299                )
8300                .into()
8301            }
8302        }
8303        unsafe extern "system" fn SelectedCommandId<
8304            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8305            const OFFSET: isize,
8306        >(
8307            this: *mut core::ffi::c_void,
8308            value: *mut i32,
8309        ) -> windows_core::HRESULT {
8310            unsafe {
8311                let this: &Identity =
8312                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8313                ICoreWebView2ContextMenuRequestedEventArgs_Impl::SelectedCommandId(
8314                    this,
8315                    core::mem::transmute_copy(&value),
8316                )
8317                .into()
8318            }
8319        }
8320        unsafe extern "system" fn SetHandled<
8321            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8322            const OFFSET: isize,
8323        >(
8324            this: *mut core::ffi::c_void,
8325            value: windows_core::BOOL,
8326        ) -> windows_core::HRESULT {
8327            unsafe {
8328                let this: &Identity =
8329                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8330                ICoreWebView2ContextMenuRequestedEventArgs_Impl::SetHandled(
8331                    this,
8332                    core::mem::transmute_copy(&value),
8333                )
8334                .into()
8335            }
8336        }
8337        unsafe extern "system" fn Handled<
8338            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8339            const OFFSET: isize,
8340        >(
8341            this: *mut core::ffi::c_void,
8342            value: *mut windows_core::BOOL,
8343        ) -> windows_core::HRESULT {
8344            unsafe {
8345                let this: &Identity =
8346                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8347                ICoreWebView2ContextMenuRequestedEventArgs_Impl::Handled(
8348                    this,
8349                    core::mem::transmute_copy(&value),
8350                )
8351                .into()
8352            }
8353        }
8354        unsafe extern "system" fn GetDeferral<
8355            Identity: ICoreWebView2ContextMenuRequestedEventArgs_Impl,
8356            const OFFSET: isize,
8357        >(
8358            this: *mut core::ffi::c_void,
8359            deferral: *mut *mut core::ffi::c_void,
8360        ) -> windows_core::HRESULT {
8361            unsafe {
8362                let this: &Identity =
8363                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8364                match ICoreWebView2ContextMenuRequestedEventArgs_Impl::GetDeferral(this) {
8365                    Ok(ok__) => {
8366                        deferral.write(core::mem::transmute(ok__));
8367                        windows_core::HRESULT(0)
8368                    }
8369                    Err(err) => err.into(),
8370                }
8371            }
8372        }
8373        Self {
8374            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8375            MenuItems: MenuItems::<Identity, OFFSET>,
8376            ContextMenuTarget: ContextMenuTarget::<Identity, OFFSET>,
8377            Location: Location::<Identity, OFFSET>,
8378            SetSelectedCommandId: SetSelectedCommandId::<Identity, OFFSET>,
8379            SelectedCommandId: SelectedCommandId::<Identity, OFFSET>,
8380            SetHandled: SetHandled::<Identity, OFFSET>,
8381            Handled: Handled::<Identity, OFFSET>,
8382            GetDeferral: GetDeferral::<Identity, OFFSET>,
8383        }
8384    }
8385    pub fn matches(iid: &windows_core::GUID) -> bool {
8386        iid == &<ICoreWebView2ContextMenuRequestedEventArgs as windows_core::Interface>::IID
8387    }
8388}
8389impl windows_core::RuntimeName for ICoreWebView2ContextMenuRequestedEventArgs {}
8390windows_core::imp::define_interface!(
8391    ICoreWebView2ContextMenuRequestedEventHandler,
8392    ICoreWebView2ContextMenuRequestedEventHandler_Vtbl,
8393    0x04d3fe1d_ab87_42fb_a898_da241d35b63c
8394);
8395windows_core::imp::interface_hierarchy!(
8396    ICoreWebView2ContextMenuRequestedEventHandler,
8397    windows_core::IUnknown
8398);
8399impl ICoreWebView2ContextMenuRequestedEventHandler {
8400    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
8401    where
8402        P0: windows_core::Param<ICoreWebView2>,
8403        P1: windows_core::Param<ICoreWebView2ContextMenuRequestedEventArgs>,
8404    {
8405        unsafe {
8406            (windows_core::Interface::vtable(self).Invoke)(
8407                windows_core::Interface::as_raw(self),
8408                sender.param().abi(),
8409                args.param().abi(),
8410            )
8411            .ok()
8412        }
8413    }
8414}
8415#[repr(C)]
8416#[doc(hidden)]
8417pub struct ICoreWebView2ContextMenuRequestedEventHandler_Vtbl {
8418    pub base__: windows_core::IUnknown_Vtbl,
8419    pub Invoke: unsafe extern "system" fn(
8420        *mut core::ffi::c_void,
8421        *mut core::ffi::c_void,
8422        *mut core::ffi::c_void,
8423    ) -> windows_core::HRESULT,
8424}
8425pub trait ICoreWebView2ContextMenuRequestedEventHandler_Impl: windows_core::IUnknownImpl {
8426    fn Invoke(
8427        &self,
8428        sender: windows_core::Ref<'_, ICoreWebView2>,
8429        args: windows_core::Ref<'_, ICoreWebView2ContextMenuRequestedEventArgs>,
8430    ) -> windows_core::Result<()>;
8431}
8432impl ICoreWebView2ContextMenuRequestedEventHandler_Vtbl {
8433    pub const fn new<
8434        Identity: ICoreWebView2ContextMenuRequestedEventHandler_Impl,
8435        const OFFSET: isize,
8436    >() -> Self {
8437        unsafe extern "system" fn Invoke<
8438            Identity: ICoreWebView2ContextMenuRequestedEventHandler_Impl,
8439            const OFFSET: isize,
8440        >(
8441            this: *mut core::ffi::c_void,
8442            sender: *mut core::ffi::c_void,
8443            args: *mut core::ffi::c_void,
8444        ) -> windows_core::HRESULT {
8445            unsafe {
8446                let this: &Identity =
8447                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8448                ICoreWebView2ContextMenuRequestedEventHandler_Impl::Invoke(
8449                    this,
8450                    core::mem::transmute_copy(&sender),
8451                    core::mem::transmute_copy(&args),
8452                )
8453                .into()
8454            }
8455        }
8456        Self {
8457            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8458            Invoke: Invoke::<Identity, OFFSET>,
8459        }
8460    }
8461    pub fn matches(iid: &windows_core::GUID) -> bool {
8462        iid == &<ICoreWebView2ContextMenuRequestedEventHandler as windows_core::Interface>::IID
8463    }
8464}
8465impl windows_core::RuntimeName for ICoreWebView2ContextMenuRequestedEventHandler {}
8466windows_core::imp::define_interface!(
8467    ICoreWebView2ContextMenuTarget,
8468    ICoreWebView2ContextMenuTarget_Vtbl,
8469    0xb8611d99_eed6_4f3f_902c_a198502ad472
8470);
8471windows_core::imp::interface_hierarchy!(ICoreWebView2ContextMenuTarget, windows_core::IUnknown);
8472impl ICoreWebView2ContextMenuTarget {
8473    pub unsafe fn Kind(
8474        &self,
8475        value: *mut COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND,
8476    ) -> windows_core::Result<()> {
8477        unsafe {
8478            (windows_core::Interface::vtable(self).Kind)(
8479                windows_core::Interface::as_raw(self),
8480                value as _,
8481            )
8482            .ok()
8483        }
8484    }
8485    pub unsafe fn IsEditable(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
8486        unsafe {
8487            (windows_core::Interface::vtable(self).IsEditable)(
8488                windows_core::Interface::as_raw(self),
8489                value as _,
8490            )
8491            .ok()
8492        }
8493    }
8494    pub unsafe fn IsRequestedForMainFrame(
8495        &self,
8496        value: *mut windows_core::BOOL,
8497    ) -> windows_core::Result<()> {
8498        unsafe {
8499            (windows_core::Interface::vtable(self).IsRequestedForMainFrame)(
8500                windows_core::Interface::as_raw(self),
8501                value as _,
8502            )
8503            .ok()
8504        }
8505    }
8506    pub unsafe fn PageUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
8507        unsafe {
8508            (windows_core::Interface::vtable(self).PageUri)(
8509                windows_core::Interface::as_raw(self),
8510                value as _,
8511            )
8512            .ok()
8513        }
8514    }
8515    pub unsafe fn FrameUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
8516        unsafe {
8517            (windows_core::Interface::vtable(self).FrameUri)(
8518                windows_core::Interface::as_raw(self),
8519                value as _,
8520            )
8521            .ok()
8522        }
8523    }
8524    pub unsafe fn HasLinkUri(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
8525        unsafe {
8526            (windows_core::Interface::vtable(self).HasLinkUri)(
8527                windows_core::Interface::as_raw(self),
8528                value as _,
8529            )
8530            .ok()
8531        }
8532    }
8533    pub unsafe fn LinkUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
8534        unsafe {
8535            (windows_core::Interface::vtable(self).LinkUri)(
8536                windows_core::Interface::as_raw(self),
8537                value as _,
8538            )
8539            .ok()
8540        }
8541    }
8542    pub unsafe fn HasLinkText(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
8543        unsafe {
8544            (windows_core::Interface::vtable(self).HasLinkText)(
8545                windows_core::Interface::as_raw(self),
8546                value as _,
8547            )
8548            .ok()
8549        }
8550    }
8551    pub unsafe fn LinkText(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
8552        unsafe {
8553            (windows_core::Interface::vtable(self).LinkText)(
8554                windows_core::Interface::as_raw(self),
8555                value as _,
8556            )
8557            .ok()
8558        }
8559    }
8560    pub unsafe fn HasSourceUri(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
8561        unsafe {
8562            (windows_core::Interface::vtable(self).HasSourceUri)(
8563                windows_core::Interface::as_raw(self),
8564                value as _,
8565            )
8566            .ok()
8567        }
8568    }
8569    pub unsafe fn SourceUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
8570        unsafe {
8571            (windows_core::Interface::vtable(self).SourceUri)(
8572                windows_core::Interface::as_raw(self),
8573                value as _,
8574            )
8575            .ok()
8576        }
8577    }
8578    pub unsafe fn HasSelection(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
8579        unsafe {
8580            (windows_core::Interface::vtable(self).HasSelection)(
8581                windows_core::Interface::as_raw(self),
8582                value as _,
8583            )
8584            .ok()
8585        }
8586    }
8587    pub unsafe fn SelectionText(
8588        &self,
8589        value: *mut windows_core::PWSTR,
8590    ) -> windows_core::Result<()> {
8591        unsafe {
8592            (windows_core::Interface::vtable(self).SelectionText)(
8593                windows_core::Interface::as_raw(self),
8594                value as _,
8595            )
8596            .ok()
8597        }
8598    }
8599}
8600#[repr(C)]
8601#[doc(hidden)]
8602pub struct ICoreWebView2ContextMenuTarget_Vtbl {
8603    pub base__: windows_core::IUnknown_Vtbl,
8604    pub Kind: unsafe extern "system" fn(
8605        *mut core::ffi::c_void,
8606        *mut COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND,
8607    ) -> windows_core::HRESULT,
8608    pub IsEditable: unsafe extern "system" fn(
8609        *mut core::ffi::c_void,
8610        *mut windows_core::BOOL,
8611    ) -> windows_core::HRESULT,
8612    pub IsRequestedForMainFrame: unsafe extern "system" fn(
8613        *mut core::ffi::c_void,
8614        *mut windows_core::BOOL,
8615    ) -> windows_core::HRESULT,
8616    pub PageUri: unsafe extern "system" fn(
8617        *mut core::ffi::c_void,
8618        *mut windows_core::PWSTR,
8619    ) -> windows_core::HRESULT,
8620    pub FrameUri: unsafe extern "system" fn(
8621        *mut core::ffi::c_void,
8622        *mut windows_core::PWSTR,
8623    ) -> windows_core::HRESULT,
8624    pub HasLinkUri: unsafe extern "system" fn(
8625        *mut core::ffi::c_void,
8626        *mut windows_core::BOOL,
8627    ) -> windows_core::HRESULT,
8628    pub LinkUri: unsafe extern "system" fn(
8629        *mut core::ffi::c_void,
8630        *mut windows_core::PWSTR,
8631    ) -> windows_core::HRESULT,
8632    pub HasLinkText: unsafe extern "system" fn(
8633        *mut core::ffi::c_void,
8634        *mut windows_core::BOOL,
8635    ) -> windows_core::HRESULT,
8636    pub LinkText: unsafe extern "system" fn(
8637        *mut core::ffi::c_void,
8638        *mut windows_core::PWSTR,
8639    ) -> windows_core::HRESULT,
8640    pub HasSourceUri: unsafe extern "system" fn(
8641        *mut core::ffi::c_void,
8642        *mut windows_core::BOOL,
8643    ) -> windows_core::HRESULT,
8644    pub SourceUri: unsafe extern "system" fn(
8645        *mut core::ffi::c_void,
8646        *mut windows_core::PWSTR,
8647    ) -> windows_core::HRESULT,
8648    pub HasSelection: unsafe extern "system" fn(
8649        *mut core::ffi::c_void,
8650        *mut windows_core::BOOL,
8651    ) -> windows_core::HRESULT,
8652    pub SelectionText: unsafe extern "system" fn(
8653        *mut core::ffi::c_void,
8654        *mut windows_core::PWSTR,
8655    ) -> windows_core::HRESULT,
8656}
8657pub trait ICoreWebView2ContextMenuTarget_Impl: windows_core::IUnknownImpl {
8658    fn Kind(&self, value: *mut COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND) -> windows_core::Result<()>;
8659    fn IsEditable(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8660    fn IsRequestedForMainFrame(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8661    fn PageUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
8662    fn FrameUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
8663    fn HasLinkUri(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8664    fn LinkUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
8665    fn HasLinkText(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8666    fn LinkText(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
8667    fn HasSourceUri(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8668    fn SourceUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
8669    fn HasSelection(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
8670    fn SelectionText(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
8671}
8672impl ICoreWebView2ContextMenuTarget_Vtbl {
8673    pub const fn new<Identity: ICoreWebView2ContextMenuTarget_Impl, const OFFSET: isize>() -> Self {
8674        unsafe extern "system" fn Kind<
8675            Identity: ICoreWebView2ContextMenuTarget_Impl,
8676            const OFFSET: isize,
8677        >(
8678            this: *mut core::ffi::c_void,
8679            value: *mut COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND,
8680        ) -> windows_core::HRESULT {
8681            unsafe {
8682                let this: &Identity =
8683                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8684                ICoreWebView2ContextMenuTarget_Impl::Kind(this, core::mem::transmute_copy(&value))
8685                    .into()
8686            }
8687        }
8688        unsafe extern "system" fn IsEditable<
8689            Identity: ICoreWebView2ContextMenuTarget_Impl,
8690            const OFFSET: isize,
8691        >(
8692            this: *mut core::ffi::c_void,
8693            value: *mut windows_core::BOOL,
8694        ) -> windows_core::HRESULT {
8695            unsafe {
8696                let this: &Identity =
8697                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8698                ICoreWebView2ContextMenuTarget_Impl::IsEditable(
8699                    this,
8700                    core::mem::transmute_copy(&value),
8701                )
8702                .into()
8703            }
8704        }
8705        unsafe extern "system" fn IsRequestedForMainFrame<
8706            Identity: ICoreWebView2ContextMenuTarget_Impl,
8707            const OFFSET: isize,
8708        >(
8709            this: *mut core::ffi::c_void,
8710            value: *mut windows_core::BOOL,
8711        ) -> windows_core::HRESULT {
8712            unsafe {
8713                let this: &Identity =
8714                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8715                ICoreWebView2ContextMenuTarget_Impl::IsRequestedForMainFrame(
8716                    this,
8717                    core::mem::transmute_copy(&value),
8718                )
8719                .into()
8720            }
8721        }
8722        unsafe extern "system" fn PageUri<
8723            Identity: ICoreWebView2ContextMenuTarget_Impl,
8724            const OFFSET: isize,
8725        >(
8726            this: *mut core::ffi::c_void,
8727            value: *mut windows_core::PWSTR,
8728        ) -> windows_core::HRESULT {
8729            unsafe {
8730                let this: &Identity =
8731                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8732                ICoreWebView2ContextMenuTarget_Impl::PageUri(
8733                    this,
8734                    core::mem::transmute_copy(&value),
8735                )
8736                .into()
8737            }
8738        }
8739        unsafe extern "system" fn FrameUri<
8740            Identity: ICoreWebView2ContextMenuTarget_Impl,
8741            const OFFSET: isize,
8742        >(
8743            this: *mut core::ffi::c_void,
8744            value: *mut windows_core::PWSTR,
8745        ) -> windows_core::HRESULT {
8746            unsafe {
8747                let this: &Identity =
8748                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8749                ICoreWebView2ContextMenuTarget_Impl::FrameUri(
8750                    this,
8751                    core::mem::transmute_copy(&value),
8752                )
8753                .into()
8754            }
8755        }
8756        unsafe extern "system" fn HasLinkUri<
8757            Identity: ICoreWebView2ContextMenuTarget_Impl,
8758            const OFFSET: isize,
8759        >(
8760            this: *mut core::ffi::c_void,
8761            value: *mut windows_core::BOOL,
8762        ) -> windows_core::HRESULT {
8763            unsafe {
8764                let this: &Identity =
8765                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8766                ICoreWebView2ContextMenuTarget_Impl::HasLinkUri(
8767                    this,
8768                    core::mem::transmute_copy(&value),
8769                )
8770                .into()
8771            }
8772        }
8773        unsafe extern "system" fn LinkUri<
8774            Identity: ICoreWebView2ContextMenuTarget_Impl,
8775            const OFFSET: isize,
8776        >(
8777            this: *mut core::ffi::c_void,
8778            value: *mut windows_core::PWSTR,
8779        ) -> windows_core::HRESULT {
8780            unsafe {
8781                let this: &Identity =
8782                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8783                ICoreWebView2ContextMenuTarget_Impl::LinkUri(
8784                    this,
8785                    core::mem::transmute_copy(&value),
8786                )
8787                .into()
8788            }
8789        }
8790        unsafe extern "system" fn HasLinkText<
8791            Identity: ICoreWebView2ContextMenuTarget_Impl,
8792            const OFFSET: isize,
8793        >(
8794            this: *mut core::ffi::c_void,
8795            value: *mut windows_core::BOOL,
8796        ) -> windows_core::HRESULT {
8797            unsafe {
8798                let this: &Identity =
8799                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8800                ICoreWebView2ContextMenuTarget_Impl::HasLinkText(
8801                    this,
8802                    core::mem::transmute_copy(&value),
8803                )
8804                .into()
8805            }
8806        }
8807        unsafe extern "system" fn LinkText<
8808            Identity: ICoreWebView2ContextMenuTarget_Impl,
8809            const OFFSET: isize,
8810        >(
8811            this: *mut core::ffi::c_void,
8812            value: *mut windows_core::PWSTR,
8813        ) -> windows_core::HRESULT {
8814            unsafe {
8815                let this: &Identity =
8816                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8817                ICoreWebView2ContextMenuTarget_Impl::LinkText(
8818                    this,
8819                    core::mem::transmute_copy(&value),
8820                )
8821                .into()
8822            }
8823        }
8824        unsafe extern "system" fn HasSourceUri<
8825            Identity: ICoreWebView2ContextMenuTarget_Impl,
8826            const OFFSET: isize,
8827        >(
8828            this: *mut core::ffi::c_void,
8829            value: *mut windows_core::BOOL,
8830        ) -> windows_core::HRESULT {
8831            unsafe {
8832                let this: &Identity =
8833                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8834                ICoreWebView2ContextMenuTarget_Impl::HasSourceUri(
8835                    this,
8836                    core::mem::transmute_copy(&value),
8837                )
8838                .into()
8839            }
8840        }
8841        unsafe extern "system" fn SourceUri<
8842            Identity: ICoreWebView2ContextMenuTarget_Impl,
8843            const OFFSET: isize,
8844        >(
8845            this: *mut core::ffi::c_void,
8846            value: *mut windows_core::PWSTR,
8847        ) -> windows_core::HRESULT {
8848            unsafe {
8849                let this: &Identity =
8850                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8851                ICoreWebView2ContextMenuTarget_Impl::SourceUri(
8852                    this,
8853                    core::mem::transmute_copy(&value),
8854                )
8855                .into()
8856            }
8857        }
8858        unsafe extern "system" fn HasSelection<
8859            Identity: ICoreWebView2ContextMenuTarget_Impl,
8860            const OFFSET: isize,
8861        >(
8862            this: *mut core::ffi::c_void,
8863            value: *mut windows_core::BOOL,
8864        ) -> windows_core::HRESULT {
8865            unsafe {
8866                let this: &Identity =
8867                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8868                ICoreWebView2ContextMenuTarget_Impl::HasSelection(
8869                    this,
8870                    core::mem::transmute_copy(&value),
8871                )
8872                .into()
8873            }
8874        }
8875        unsafe extern "system" fn SelectionText<
8876            Identity: ICoreWebView2ContextMenuTarget_Impl,
8877            const OFFSET: isize,
8878        >(
8879            this: *mut core::ffi::c_void,
8880            value: *mut windows_core::PWSTR,
8881        ) -> windows_core::HRESULT {
8882            unsafe {
8883                let this: &Identity =
8884                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8885                ICoreWebView2ContextMenuTarget_Impl::SelectionText(
8886                    this,
8887                    core::mem::transmute_copy(&value),
8888                )
8889                .into()
8890            }
8891        }
8892        Self {
8893            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8894            Kind: Kind::<Identity, OFFSET>,
8895            IsEditable: IsEditable::<Identity, OFFSET>,
8896            IsRequestedForMainFrame: IsRequestedForMainFrame::<Identity, OFFSET>,
8897            PageUri: PageUri::<Identity, OFFSET>,
8898            FrameUri: FrameUri::<Identity, OFFSET>,
8899            HasLinkUri: HasLinkUri::<Identity, OFFSET>,
8900            LinkUri: LinkUri::<Identity, OFFSET>,
8901            HasLinkText: HasLinkText::<Identity, OFFSET>,
8902            LinkText: LinkText::<Identity, OFFSET>,
8903            HasSourceUri: HasSourceUri::<Identity, OFFSET>,
8904            SourceUri: SourceUri::<Identity, OFFSET>,
8905            HasSelection: HasSelection::<Identity, OFFSET>,
8906            SelectionText: SelectionText::<Identity, OFFSET>,
8907        }
8908    }
8909    pub fn matches(iid: &windows_core::GUID) -> bool {
8910        iid == &<ICoreWebView2ContextMenuTarget as windows_core::Interface>::IID
8911    }
8912}
8913impl windows_core::RuntimeName for ICoreWebView2ContextMenuTarget {}
8914windows_core::imp::define_interface!(
8915    ICoreWebView2Controller,
8916    ICoreWebView2Controller_Vtbl,
8917    0x4d00c0d1_9434_4eb6_8078_8697a560334f
8918);
8919windows_core::imp::interface_hierarchy!(ICoreWebView2Controller, windows_core::IUnknown);
8920impl ICoreWebView2Controller {
8921    pub unsafe fn IsVisible(&self, isvisible: *mut windows_core::BOOL) -> windows_core::Result<()> {
8922        unsafe {
8923            (windows_core::Interface::vtable(self).IsVisible)(
8924                windows_core::Interface::as_raw(self),
8925                isvisible as _,
8926            )
8927            .ok()
8928        }
8929    }
8930    pub unsafe fn SetIsVisible(&self, isvisible: bool) -> windows_core::Result<()> {
8931        unsafe {
8932            (windows_core::Interface::vtable(self).SetIsVisible)(
8933                windows_core::Interface::as_raw(self),
8934                isvisible.into(),
8935            )
8936            .ok()
8937        }
8938    }
8939    pub unsafe fn Bounds(
8940        &self,
8941        bounds: *mut windows::Win32::Foundation::RECT,
8942    ) -> windows_core::Result<()> {
8943        unsafe {
8944            (windows_core::Interface::vtable(self).Bounds)(
8945                windows_core::Interface::as_raw(self),
8946                bounds as _,
8947            )
8948            .ok()
8949        }
8950    }
8951    pub unsafe fn SetBounds(
8952        &self,
8953        bounds: windows::Win32::Foundation::RECT,
8954    ) -> windows_core::Result<()> {
8955        unsafe {
8956            (windows_core::Interface::vtable(self).SetBounds)(
8957                windows_core::Interface::as_raw(self),
8958                core::mem::transmute(bounds),
8959            )
8960            .ok()
8961        }
8962    }
8963    pub unsafe fn ZoomFactor(&self, zoomfactor: *mut f64) -> windows_core::Result<()> {
8964        unsafe {
8965            (windows_core::Interface::vtable(self).ZoomFactor)(
8966                windows_core::Interface::as_raw(self),
8967                zoomfactor as _,
8968            )
8969            .ok()
8970        }
8971    }
8972    pub unsafe fn SetZoomFactor(&self, zoomfactor: f64) -> windows_core::Result<()> {
8973        unsafe {
8974            (windows_core::Interface::vtable(self).SetZoomFactor)(
8975                windows_core::Interface::as_raw(self),
8976                zoomfactor,
8977            )
8978            .ok()
8979        }
8980    }
8981    pub unsafe fn add_ZoomFactorChanged<P0>(
8982        &self,
8983        eventhandler: P0,
8984        token: *mut i64,
8985    ) -> windows_core::Result<()>
8986    where
8987        P0: windows_core::Param<ICoreWebView2ZoomFactorChangedEventHandler>,
8988    {
8989        unsafe {
8990            (windows_core::Interface::vtable(self).add_ZoomFactorChanged)(
8991                windows_core::Interface::as_raw(self),
8992                eventhandler.param().abi(),
8993                token as _,
8994            )
8995            .ok()
8996        }
8997    }
8998    pub unsafe fn remove_ZoomFactorChanged(&self, token: i64) -> windows_core::Result<()> {
8999        unsafe {
9000            (windows_core::Interface::vtable(self).remove_ZoomFactorChanged)(
9001                windows_core::Interface::as_raw(self),
9002                token,
9003            )
9004            .ok()
9005        }
9006    }
9007    pub unsafe fn SetBoundsAndZoomFactor(
9008        &self,
9009        bounds: windows::Win32::Foundation::RECT,
9010        zoomfactor: f64,
9011    ) -> windows_core::Result<()> {
9012        unsafe {
9013            (windows_core::Interface::vtable(self).SetBoundsAndZoomFactor)(
9014                windows_core::Interface::as_raw(self),
9015                core::mem::transmute(bounds),
9016                zoomfactor,
9017            )
9018            .ok()
9019        }
9020    }
9021    pub unsafe fn MoveFocus(
9022        &self,
9023        reason: COREWEBVIEW2_MOVE_FOCUS_REASON,
9024    ) -> windows_core::Result<()> {
9025        unsafe {
9026            (windows_core::Interface::vtable(self).MoveFocus)(
9027                windows_core::Interface::as_raw(self),
9028                reason,
9029            )
9030            .ok()
9031        }
9032    }
9033    pub unsafe fn add_MoveFocusRequested<P0>(
9034        &self,
9035        eventhandler: P0,
9036        token: *mut i64,
9037    ) -> windows_core::Result<()>
9038    where
9039        P0: windows_core::Param<ICoreWebView2MoveFocusRequestedEventHandler>,
9040    {
9041        unsafe {
9042            (windows_core::Interface::vtable(self).add_MoveFocusRequested)(
9043                windows_core::Interface::as_raw(self),
9044                eventhandler.param().abi(),
9045                token as _,
9046            )
9047            .ok()
9048        }
9049    }
9050    pub unsafe fn remove_MoveFocusRequested(&self, token: i64) -> windows_core::Result<()> {
9051        unsafe {
9052            (windows_core::Interface::vtable(self).remove_MoveFocusRequested)(
9053                windows_core::Interface::as_raw(self),
9054                token,
9055            )
9056            .ok()
9057        }
9058    }
9059    pub unsafe fn add_GotFocus<P0>(
9060        &self,
9061        eventhandler: P0,
9062        token: *mut i64,
9063    ) -> windows_core::Result<()>
9064    where
9065        P0: windows_core::Param<ICoreWebView2FocusChangedEventHandler>,
9066    {
9067        unsafe {
9068            (windows_core::Interface::vtable(self).add_GotFocus)(
9069                windows_core::Interface::as_raw(self),
9070                eventhandler.param().abi(),
9071                token as _,
9072            )
9073            .ok()
9074        }
9075    }
9076    pub unsafe fn remove_GotFocus(&self, token: i64) -> windows_core::Result<()> {
9077        unsafe {
9078            (windows_core::Interface::vtable(self).remove_GotFocus)(
9079                windows_core::Interface::as_raw(self),
9080                token,
9081            )
9082            .ok()
9083        }
9084    }
9085    pub unsafe fn add_LostFocus<P0>(
9086        &self,
9087        eventhandler: P0,
9088        token: *mut i64,
9089    ) -> windows_core::Result<()>
9090    where
9091        P0: windows_core::Param<ICoreWebView2FocusChangedEventHandler>,
9092    {
9093        unsafe {
9094            (windows_core::Interface::vtable(self).add_LostFocus)(
9095                windows_core::Interface::as_raw(self),
9096                eventhandler.param().abi(),
9097                token as _,
9098            )
9099            .ok()
9100        }
9101    }
9102    pub unsafe fn remove_LostFocus(&self, token: i64) -> windows_core::Result<()> {
9103        unsafe {
9104            (windows_core::Interface::vtable(self).remove_LostFocus)(
9105                windows_core::Interface::as_raw(self),
9106                token,
9107            )
9108            .ok()
9109        }
9110    }
9111    pub unsafe fn add_AcceleratorKeyPressed<P0>(
9112        &self,
9113        eventhandler: P0,
9114        token: *mut i64,
9115    ) -> windows_core::Result<()>
9116    where
9117        P0: windows_core::Param<ICoreWebView2AcceleratorKeyPressedEventHandler>,
9118    {
9119        unsafe {
9120            (windows_core::Interface::vtable(self).add_AcceleratorKeyPressed)(
9121                windows_core::Interface::as_raw(self),
9122                eventhandler.param().abi(),
9123                token as _,
9124            )
9125            .ok()
9126        }
9127    }
9128    pub unsafe fn remove_AcceleratorKeyPressed(&self, token: i64) -> windows_core::Result<()> {
9129        unsafe {
9130            (windows_core::Interface::vtable(self).remove_AcceleratorKeyPressed)(
9131                windows_core::Interface::as_raw(self),
9132                token,
9133            )
9134            .ok()
9135        }
9136    }
9137    pub unsafe fn ParentWindow(
9138        &self,
9139        parentwindow: *mut windows::Win32::Foundation::HWND,
9140    ) -> windows_core::Result<()> {
9141        unsafe {
9142            (windows_core::Interface::vtable(self).ParentWindow)(
9143                windows_core::Interface::as_raw(self),
9144                parentwindow as _,
9145            )
9146            .ok()
9147        }
9148    }
9149    pub unsafe fn SetParentWindow(
9150        &self,
9151        parentwindow: windows::Win32::Foundation::HWND,
9152    ) -> windows_core::Result<()> {
9153        unsafe {
9154            (windows_core::Interface::vtable(self).SetParentWindow)(
9155                windows_core::Interface::as_raw(self),
9156                parentwindow,
9157            )
9158            .ok()
9159        }
9160    }
9161    pub unsafe fn NotifyParentWindowPositionChanged(&self) -> windows_core::Result<()> {
9162        unsafe {
9163            (windows_core::Interface::vtable(self).NotifyParentWindowPositionChanged)(
9164                windows_core::Interface::as_raw(self),
9165            )
9166            .ok()
9167        }
9168    }
9169    pub unsafe fn Close(&self) -> windows_core::Result<()> {
9170        unsafe {
9171            (windows_core::Interface::vtable(self).Close)(windows_core::Interface::as_raw(self))
9172                .ok()
9173        }
9174    }
9175    pub unsafe fn CoreWebView2(&self) -> windows_core::Result<ICoreWebView2> {
9176        unsafe {
9177            let mut result__ = core::mem::zeroed();
9178            (windows_core::Interface::vtable(self).CoreWebView2)(
9179                windows_core::Interface::as_raw(self),
9180                &mut result__,
9181            )
9182            .and_then(|| windows_core::Type::from_abi(result__))
9183        }
9184    }
9185}
9186#[repr(C)]
9187#[doc(hidden)]
9188pub struct ICoreWebView2Controller_Vtbl {
9189    pub base__: windows_core::IUnknown_Vtbl,
9190    pub IsVisible: unsafe extern "system" fn(
9191        *mut core::ffi::c_void,
9192        *mut windows_core::BOOL,
9193    ) -> windows_core::HRESULT,
9194    pub SetIsVisible: unsafe extern "system" fn(
9195        *mut core::ffi::c_void,
9196        windows_core::BOOL,
9197    ) -> windows_core::HRESULT,
9198    pub Bounds: unsafe extern "system" fn(
9199        *mut core::ffi::c_void,
9200        *mut windows::Win32::Foundation::RECT,
9201    ) -> windows_core::HRESULT,
9202    pub SetBounds: unsafe extern "system" fn(
9203        *mut core::ffi::c_void,
9204        windows::Win32::Foundation::RECT,
9205    ) -> windows_core::HRESULT,
9206    pub ZoomFactor:
9207        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
9208    pub SetZoomFactor:
9209        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
9210    pub add_ZoomFactorChanged: unsafe extern "system" fn(
9211        *mut core::ffi::c_void,
9212        *mut core::ffi::c_void,
9213        *mut i64,
9214    ) -> windows_core::HRESULT,
9215    pub remove_ZoomFactorChanged:
9216        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
9217    pub SetBoundsAndZoomFactor: unsafe extern "system" fn(
9218        *mut core::ffi::c_void,
9219        windows::Win32::Foundation::RECT,
9220        f64,
9221    ) -> windows_core::HRESULT,
9222    pub MoveFocus: unsafe extern "system" fn(
9223        *mut core::ffi::c_void,
9224        COREWEBVIEW2_MOVE_FOCUS_REASON,
9225    ) -> windows_core::HRESULT,
9226    pub add_MoveFocusRequested: unsafe extern "system" fn(
9227        *mut core::ffi::c_void,
9228        *mut core::ffi::c_void,
9229        *mut i64,
9230    ) -> windows_core::HRESULT,
9231    pub remove_MoveFocusRequested:
9232        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
9233    pub add_GotFocus: unsafe extern "system" fn(
9234        *mut core::ffi::c_void,
9235        *mut core::ffi::c_void,
9236        *mut i64,
9237    ) -> windows_core::HRESULT,
9238    pub remove_GotFocus:
9239        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
9240    pub add_LostFocus: unsafe extern "system" fn(
9241        *mut core::ffi::c_void,
9242        *mut core::ffi::c_void,
9243        *mut i64,
9244    ) -> windows_core::HRESULT,
9245    pub remove_LostFocus:
9246        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
9247    pub add_AcceleratorKeyPressed: unsafe extern "system" fn(
9248        *mut core::ffi::c_void,
9249        *mut core::ffi::c_void,
9250        *mut i64,
9251    ) -> windows_core::HRESULT,
9252    pub remove_AcceleratorKeyPressed:
9253        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
9254    pub ParentWindow: unsafe extern "system" fn(
9255        *mut core::ffi::c_void,
9256        *mut windows::Win32::Foundation::HWND,
9257    ) -> windows_core::HRESULT,
9258    pub SetParentWindow: unsafe extern "system" fn(
9259        *mut core::ffi::c_void,
9260        windows::Win32::Foundation::HWND,
9261    ) -> windows_core::HRESULT,
9262    pub NotifyParentWindowPositionChanged:
9263        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9264    pub Close: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9265    pub CoreWebView2: unsafe extern "system" fn(
9266        *mut core::ffi::c_void,
9267        *mut *mut core::ffi::c_void,
9268    ) -> windows_core::HRESULT,
9269}
9270pub trait ICoreWebView2Controller_Impl: windows_core::IUnknownImpl {
9271    fn IsVisible(&self, isvisible: *mut windows_core::BOOL) -> windows_core::Result<()>;
9272    fn SetIsVisible(&self, isvisible: windows_core::BOOL) -> windows_core::Result<()>;
9273    fn Bounds(&self, bounds: *mut windows::Win32::Foundation::RECT) -> windows_core::Result<()>;
9274    fn SetBounds(&self, bounds: &windows::Win32::Foundation::RECT) -> windows_core::Result<()>;
9275    fn ZoomFactor(&self, zoomfactor: *mut f64) -> windows_core::Result<()>;
9276    fn SetZoomFactor(&self, zoomfactor: f64) -> windows_core::Result<()>;
9277    fn add_ZoomFactorChanged(
9278        &self,
9279        eventhandler: windows_core::Ref<'_, ICoreWebView2ZoomFactorChangedEventHandler>,
9280        token: *mut i64,
9281    ) -> windows_core::Result<()>;
9282    fn remove_ZoomFactorChanged(&self, token: i64) -> windows_core::Result<()>;
9283    fn SetBoundsAndZoomFactor(
9284        &self,
9285        bounds: &windows::Win32::Foundation::RECT,
9286        zoomfactor: f64,
9287    ) -> windows_core::Result<()>;
9288    fn MoveFocus(&self, reason: COREWEBVIEW2_MOVE_FOCUS_REASON) -> windows_core::Result<()>;
9289    fn add_MoveFocusRequested(
9290        &self,
9291        eventhandler: windows_core::Ref<'_, ICoreWebView2MoveFocusRequestedEventHandler>,
9292        token: *mut i64,
9293    ) -> windows_core::Result<()>;
9294    fn remove_MoveFocusRequested(&self, token: i64) -> windows_core::Result<()>;
9295    fn add_GotFocus(
9296        &self,
9297        eventhandler: windows_core::Ref<'_, ICoreWebView2FocusChangedEventHandler>,
9298        token: *mut i64,
9299    ) -> windows_core::Result<()>;
9300    fn remove_GotFocus(&self, token: i64) -> windows_core::Result<()>;
9301    fn add_LostFocus(
9302        &self,
9303        eventhandler: windows_core::Ref<'_, ICoreWebView2FocusChangedEventHandler>,
9304        token: *mut i64,
9305    ) -> windows_core::Result<()>;
9306    fn remove_LostFocus(&self, token: i64) -> windows_core::Result<()>;
9307    fn add_AcceleratorKeyPressed(
9308        &self,
9309        eventhandler: windows_core::Ref<'_, ICoreWebView2AcceleratorKeyPressedEventHandler>,
9310        token: *mut i64,
9311    ) -> windows_core::Result<()>;
9312    fn remove_AcceleratorKeyPressed(&self, token: i64) -> windows_core::Result<()>;
9313    fn ParentWindow(
9314        &self,
9315        parentwindow: *mut windows::Win32::Foundation::HWND,
9316    ) -> windows_core::Result<()>;
9317    fn SetParentWindow(
9318        &self,
9319        parentwindow: windows::Win32::Foundation::HWND,
9320    ) -> windows_core::Result<()>;
9321    fn NotifyParentWindowPositionChanged(&self) -> windows_core::Result<()>;
9322    fn Close(&self) -> windows_core::Result<()>;
9323    fn CoreWebView2(&self) -> windows_core::Result<ICoreWebView2>;
9324}
9325impl ICoreWebView2Controller_Vtbl {
9326    pub const fn new<Identity: ICoreWebView2Controller_Impl, const OFFSET: isize>() -> Self {
9327        unsafe extern "system" fn IsVisible<
9328            Identity: ICoreWebView2Controller_Impl,
9329            const OFFSET: isize,
9330        >(
9331            this: *mut core::ffi::c_void,
9332            isvisible: *mut windows_core::BOOL,
9333        ) -> windows_core::HRESULT {
9334            unsafe {
9335                let this: &Identity =
9336                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9337                ICoreWebView2Controller_Impl::IsVisible(this, core::mem::transmute_copy(&isvisible))
9338                    .into()
9339            }
9340        }
9341        unsafe extern "system" fn SetIsVisible<
9342            Identity: ICoreWebView2Controller_Impl,
9343            const OFFSET: isize,
9344        >(
9345            this: *mut core::ffi::c_void,
9346            isvisible: windows_core::BOOL,
9347        ) -> windows_core::HRESULT {
9348            unsafe {
9349                let this: &Identity =
9350                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9351                ICoreWebView2Controller_Impl::SetIsVisible(
9352                    this,
9353                    core::mem::transmute_copy(&isvisible),
9354                )
9355                .into()
9356            }
9357        }
9358        unsafe extern "system" fn Bounds<
9359            Identity: ICoreWebView2Controller_Impl,
9360            const OFFSET: isize,
9361        >(
9362            this: *mut core::ffi::c_void,
9363            bounds: *mut windows::Win32::Foundation::RECT,
9364        ) -> windows_core::HRESULT {
9365            unsafe {
9366                let this: &Identity =
9367                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9368                ICoreWebView2Controller_Impl::Bounds(this, core::mem::transmute_copy(&bounds))
9369                    .into()
9370            }
9371        }
9372        unsafe extern "system" fn SetBounds<
9373            Identity: ICoreWebView2Controller_Impl,
9374            const OFFSET: isize,
9375        >(
9376            this: *mut core::ffi::c_void,
9377            bounds: windows::Win32::Foundation::RECT,
9378        ) -> windows_core::HRESULT {
9379            unsafe {
9380                let this: &Identity =
9381                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9382                ICoreWebView2Controller_Impl::SetBounds(this, core::mem::transmute(&bounds)).into()
9383            }
9384        }
9385        unsafe extern "system" fn ZoomFactor<
9386            Identity: ICoreWebView2Controller_Impl,
9387            const OFFSET: isize,
9388        >(
9389            this: *mut core::ffi::c_void,
9390            zoomfactor: *mut f64,
9391        ) -> windows_core::HRESULT {
9392            unsafe {
9393                let this: &Identity =
9394                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9395                ICoreWebView2Controller_Impl::ZoomFactor(
9396                    this,
9397                    core::mem::transmute_copy(&zoomfactor),
9398                )
9399                .into()
9400            }
9401        }
9402        unsafe extern "system" fn SetZoomFactor<
9403            Identity: ICoreWebView2Controller_Impl,
9404            const OFFSET: isize,
9405        >(
9406            this: *mut core::ffi::c_void,
9407            zoomfactor: f64,
9408        ) -> windows_core::HRESULT {
9409            unsafe {
9410                let this: &Identity =
9411                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9412                ICoreWebView2Controller_Impl::SetZoomFactor(
9413                    this,
9414                    core::mem::transmute_copy(&zoomfactor),
9415                )
9416                .into()
9417            }
9418        }
9419        unsafe extern "system" fn add_ZoomFactorChanged<
9420            Identity: ICoreWebView2Controller_Impl,
9421            const OFFSET: isize,
9422        >(
9423            this: *mut core::ffi::c_void,
9424            eventhandler: *mut core::ffi::c_void,
9425            token: *mut i64,
9426        ) -> windows_core::HRESULT {
9427            unsafe {
9428                let this: &Identity =
9429                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9430                ICoreWebView2Controller_Impl::add_ZoomFactorChanged(
9431                    this,
9432                    core::mem::transmute_copy(&eventhandler),
9433                    core::mem::transmute_copy(&token),
9434                )
9435                .into()
9436            }
9437        }
9438        unsafe extern "system" fn remove_ZoomFactorChanged<
9439            Identity: ICoreWebView2Controller_Impl,
9440            const OFFSET: isize,
9441        >(
9442            this: *mut core::ffi::c_void,
9443            token: i64,
9444        ) -> windows_core::HRESULT {
9445            unsafe {
9446                let this: &Identity =
9447                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9448                ICoreWebView2Controller_Impl::remove_ZoomFactorChanged(
9449                    this,
9450                    core::mem::transmute_copy(&token),
9451                )
9452                .into()
9453            }
9454        }
9455        unsafe extern "system" fn SetBoundsAndZoomFactor<
9456            Identity: ICoreWebView2Controller_Impl,
9457            const OFFSET: isize,
9458        >(
9459            this: *mut core::ffi::c_void,
9460            bounds: windows::Win32::Foundation::RECT,
9461            zoomfactor: f64,
9462        ) -> windows_core::HRESULT {
9463            unsafe {
9464                let this: &Identity =
9465                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9466                ICoreWebView2Controller_Impl::SetBoundsAndZoomFactor(
9467                    this,
9468                    core::mem::transmute(&bounds),
9469                    core::mem::transmute_copy(&zoomfactor),
9470                )
9471                .into()
9472            }
9473        }
9474        unsafe extern "system" fn MoveFocus<
9475            Identity: ICoreWebView2Controller_Impl,
9476            const OFFSET: isize,
9477        >(
9478            this: *mut core::ffi::c_void,
9479            reason: COREWEBVIEW2_MOVE_FOCUS_REASON,
9480        ) -> windows_core::HRESULT {
9481            unsafe {
9482                let this: &Identity =
9483                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9484                ICoreWebView2Controller_Impl::MoveFocus(this, core::mem::transmute_copy(&reason))
9485                    .into()
9486            }
9487        }
9488        unsafe extern "system" fn add_MoveFocusRequested<
9489            Identity: ICoreWebView2Controller_Impl,
9490            const OFFSET: isize,
9491        >(
9492            this: *mut core::ffi::c_void,
9493            eventhandler: *mut core::ffi::c_void,
9494            token: *mut i64,
9495        ) -> windows_core::HRESULT {
9496            unsafe {
9497                let this: &Identity =
9498                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9499                ICoreWebView2Controller_Impl::add_MoveFocusRequested(
9500                    this,
9501                    core::mem::transmute_copy(&eventhandler),
9502                    core::mem::transmute_copy(&token),
9503                )
9504                .into()
9505            }
9506        }
9507        unsafe extern "system" fn remove_MoveFocusRequested<
9508            Identity: ICoreWebView2Controller_Impl,
9509            const OFFSET: isize,
9510        >(
9511            this: *mut core::ffi::c_void,
9512            token: i64,
9513        ) -> windows_core::HRESULT {
9514            unsafe {
9515                let this: &Identity =
9516                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9517                ICoreWebView2Controller_Impl::remove_MoveFocusRequested(
9518                    this,
9519                    core::mem::transmute_copy(&token),
9520                )
9521                .into()
9522            }
9523        }
9524        unsafe extern "system" fn add_GotFocus<
9525            Identity: ICoreWebView2Controller_Impl,
9526            const OFFSET: isize,
9527        >(
9528            this: *mut core::ffi::c_void,
9529            eventhandler: *mut core::ffi::c_void,
9530            token: *mut i64,
9531        ) -> windows_core::HRESULT {
9532            unsafe {
9533                let this: &Identity =
9534                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9535                ICoreWebView2Controller_Impl::add_GotFocus(
9536                    this,
9537                    core::mem::transmute_copy(&eventhandler),
9538                    core::mem::transmute_copy(&token),
9539                )
9540                .into()
9541            }
9542        }
9543        unsafe extern "system" fn remove_GotFocus<
9544            Identity: ICoreWebView2Controller_Impl,
9545            const OFFSET: isize,
9546        >(
9547            this: *mut core::ffi::c_void,
9548            token: i64,
9549        ) -> windows_core::HRESULT {
9550            unsafe {
9551                let this: &Identity =
9552                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9553                ICoreWebView2Controller_Impl::remove_GotFocus(
9554                    this,
9555                    core::mem::transmute_copy(&token),
9556                )
9557                .into()
9558            }
9559        }
9560        unsafe extern "system" fn add_LostFocus<
9561            Identity: ICoreWebView2Controller_Impl,
9562            const OFFSET: isize,
9563        >(
9564            this: *mut core::ffi::c_void,
9565            eventhandler: *mut core::ffi::c_void,
9566            token: *mut i64,
9567        ) -> windows_core::HRESULT {
9568            unsafe {
9569                let this: &Identity =
9570                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9571                ICoreWebView2Controller_Impl::add_LostFocus(
9572                    this,
9573                    core::mem::transmute_copy(&eventhandler),
9574                    core::mem::transmute_copy(&token),
9575                )
9576                .into()
9577            }
9578        }
9579        unsafe extern "system" fn remove_LostFocus<
9580            Identity: ICoreWebView2Controller_Impl,
9581            const OFFSET: isize,
9582        >(
9583            this: *mut core::ffi::c_void,
9584            token: i64,
9585        ) -> windows_core::HRESULT {
9586            unsafe {
9587                let this: &Identity =
9588                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9589                ICoreWebView2Controller_Impl::remove_LostFocus(
9590                    this,
9591                    core::mem::transmute_copy(&token),
9592                )
9593                .into()
9594            }
9595        }
9596        unsafe extern "system" fn add_AcceleratorKeyPressed<
9597            Identity: ICoreWebView2Controller_Impl,
9598            const OFFSET: isize,
9599        >(
9600            this: *mut core::ffi::c_void,
9601            eventhandler: *mut core::ffi::c_void,
9602            token: *mut i64,
9603        ) -> windows_core::HRESULT {
9604            unsafe {
9605                let this: &Identity =
9606                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9607                ICoreWebView2Controller_Impl::add_AcceleratorKeyPressed(
9608                    this,
9609                    core::mem::transmute_copy(&eventhandler),
9610                    core::mem::transmute_copy(&token),
9611                )
9612                .into()
9613            }
9614        }
9615        unsafe extern "system" fn remove_AcceleratorKeyPressed<
9616            Identity: ICoreWebView2Controller_Impl,
9617            const OFFSET: isize,
9618        >(
9619            this: *mut core::ffi::c_void,
9620            token: i64,
9621        ) -> windows_core::HRESULT {
9622            unsafe {
9623                let this: &Identity =
9624                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9625                ICoreWebView2Controller_Impl::remove_AcceleratorKeyPressed(
9626                    this,
9627                    core::mem::transmute_copy(&token),
9628                )
9629                .into()
9630            }
9631        }
9632        unsafe extern "system" fn ParentWindow<
9633            Identity: ICoreWebView2Controller_Impl,
9634            const OFFSET: isize,
9635        >(
9636            this: *mut core::ffi::c_void,
9637            parentwindow: *mut windows::Win32::Foundation::HWND,
9638        ) -> windows_core::HRESULT {
9639            unsafe {
9640                let this: &Identity =
9641                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9642                ICoreWebView2Controller_Impl::ParentWindow(
9643                    this,
9644                    core::mem::transmute_copy(&parentwindow),
9645                )
9646                .into()
9647            }
9648        }
9649        unsafe extern "system" fn SetParentWindow<
9650            Identity: ICoreWebView2Controller_Impl,
9651            const OFFSET: isize,
9652        >(
9653            this: *mut core::ffi::c_void,
9654            parentwindow: windows::Win32::Foundation::HWND,
9655        ) -> windows_core::HRESULT {
9656            unsafe {
9657                let this: &Identity =
9658                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9659                ICoreWebView2Controller_Impl::SetParentWindow(
9660                    this,
9661                    core::mem::transmute_copy(&parentwindow),
9662                )
9663                .into()
9664            }
9665        }
9666        unsafe extern "system" fn NotifyParentWindowPositionChanged<
9667            Identity: ICoreWebView2Controller_Impl,
9668            const OFFSET: isize,
9669        >(
9670            this: *mut core::ffi::c_void,
9671        ) -> windows_core::HRESULT {
9672            unsafe {
9673                let this: &Identity =
9674                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9675                ICoreWebView2Controller_Impl::NotifyParentWindowPositionChanged(this).into()
9676            }
9677        }
9678        unsafe extern "system" fn Close<
9679            Identity: ICoreWebView2Controller_Impl,
9680            const OFFSET: isize,
9681        >(
9682            this: *mut core::ffi::c_void,
9683        ) -> windows_core::HRESULT {
9684            unsafe {
9685                let this: &Identity =
9686                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9687                ICoreWebView2Controller_Impl::Close(this).into()
9688            }
9689        }
9690        unsafe extern "system" fn CoreWebView2<
9691            Identity: ICoreWebView2Controller_Impl,
9692            const OFFSET: isize,
9693        >(
9694            this: *mut core::ffi::c_void,
9695            corewebview2: *mut *mut core::ffi::c_void,
9696        ) -> windows_core::HRESULT {
9697            unsafe {
9698                let this: &Identity =
9699                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9700                match ICoreWebView2Controller_Impl::CoreWebView2(this) {
9701                    Ok(ok__) => {
9702                        corewebview2.write(core::mem::transmute(ok__));
9703                        windows_core::HRESULT(0)
9704                    }
9705                    Err(err) => err.into(),
9706                }
9707            }
9708        }
9709        Self {
9710            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9711            IsVisible: IsVisible::<Identity, OFFSET>,
9712            SetIsVisible: SetIsVisible::<Identity, OFFSET>,
9713            Bounds: Bounds::<Identity, OFFSET>,
9714            SetBounds: SetBounds::<Identity, OFFSET>,
9715            ZoomFactor: ZoomFactor::<Identity, OFFSET>,
9716            SetZoomFactor: SetZoomFactor::<Identity, OFFSET>,
9717            add_ZoomFactorChanged: add_ZoomFactorChanged::<Identity, OFFSET>,
9718            remove_ZoomFactorChanged: remove_ZoomFactorChanged::<Identity, OFFSET>,
9719            SetBoundsAndZoomFactor: SetBoundsAndZoomFactor::<Identity, OFFSET>,
9720            MoveFocus: MoveFocus::<Identity, OFFSET>,
9721            add_MoveFocusRequested: add_MoveFocusRequested::<Identity, OFFSET>,
9722            remove_MoveFocusRequested: remove_MoveFocusRequested::<Identity, OFFSET>,
9723            add_GotFocus: add_GotFocus::<Identity, OFFSET>,
9724            remove_GotFocus: remove_GotFocus::<Identity, OFFSET>,
9725            add_LostFocus: add_LostFocus::<Identity, OFFSET>,
9726            remove_LostFocus: remove_LostFocus::<Identity, OFFSET>,
9727            add_AcceleratorKeyPressed: add_AcceleratorKeyPressed::<Identity, OFFSET>,
9728            remove_AcceleratorKeyPressed: remove_AcceleratorKeyPressed::<Identity, OFFSET>,
9729            ParentWindow: ParentWindow::<Identity, OFFSET>,
9730            SetParentWindow: SetParentWindow::<Identity, OFFSET>,
9731            NotifyParentWindowPositionChanged: NotifyParentWindowPositionChanged::<Identity, OFFSET>,
9732            Close: Close::<Identity, OFFSET>,
9733            CoreWebView2: CoreWebView2::<Identity, OFFSET>,
9734        }
9735    }
9736    pub fn matches(iid: &windows_core::GUID) -> bool {
9737        iid == &<ICoreWebView2Controller as windows_core::Interface>::IID
9738    }
9739}
9740impl windows_core::RuntimeName for ICoreWebView2Controller {}
9741windows_core::imp::define_interface!(
9742    ICoreWebView2Controller2,
9743    ICoreWebView2Controller2_Vtbl,
9744    0xc979903e_d4ca_4228_92eb_47ee3fa96eab
9745);
9746impl core::ops::Deref for ICoreWebView2Controller2 {
9747    type Target = ICoreWebView2Controller;
9748    fn deref(&self) -> &Self::Target {
9749        unsafe { core::mem::transmute(self) }
9750    }
9751}
9752windows_core::imp::interface_hierarchy!(
9753    ICoreWebView2Controller2,
9754    windows_core::IUnknown,
9755    ICoreWebView2Controller
9756);
9757impl ICoreWebView2Controller2 {
9758    pub unsafe fn DefaultBackgroundColor(
9759        &self,
9760        value: *mut COREWEBVIEW2_COLOR,
9761    ) -> windows_core::Result<()> {
9762        unsafe {
9763            (windows_core::Interface::vtable(self).DefaultBackgroundColor)(
9764                windows_core::Interface::as_raw(self),
9765                value as _,
9766            )
9767            .ok()
9768        }
9769    }
9770    pub unsafe fn SetDefaultBackgroundColor(
9771        &self,
9772        value: COREWEBVIEW2_COLOR,
9773    ) -> windows_core::Result<()> {
9774        unsafe {
9775            (windows_core::Interface::vtable(self).SetDefaultBackgroundColor)(
9776                windows_core::Interface::as_raw(self),
9777                core::mem::transmute(value),
9778            )
9779            .ok()
9780        }
9781    }
9782}
9783#[repr(C)]
9784#[doc(hidden)]
9785pub struct ICoreWebView2Controller2_Vtbl {
9786    pub base__: ICoreWebView2Controller_Vtbl,
9787    pub DefaultBackgroundColor: unsafe extern "system" fn(
9788        *mut core::ffi::c_void,
9789        *mut COREWEBVIEW2_COLOR,
9790    ) -> windows_core::HRESULT,
9791    pub SetDefaultBackgroundColor: unsafe extern "system" fn(
9792        *mut core::ffi::c_void,
9793        COREWEBVIEW2_COLOR,
9794    ) -> windows_core::HRESULT,
9795}
9796pub trait ICoreWebView2Controller2_Impl: ICoreWebView2Controller_Impl {
9797    fn DefaultBackgroundColor(&self, value: *mut COREWEBVIEW2_COLOR) -> windows_core::Result<()>;
9798    fn SetDefaultBackgroundColor(&self, value: &COREWEBVIEW2_COLOR) -> windows_core::Result<()>;
9799}
9800impl ICoreWebView2Controller2_Vtbl {
9801    pub const fn new<Identity: ICoreWebView2Controller2_Impl, const OFFSET: isize>() -> Self {
9802        unsafe extern "system" fn DefaultBackgroundColor<
9803            Identity: ICoreWebView2Controller2_Impl,
9804            const OFFSET: isize,
9805        >(
9806            this: *mut core::ffi::c_void,
9807            value: *mut COREWEBVIEW2_COLOR,
9808        ) -> windows_core::HRESULT {
9809            unsafe {
9810                let this: &Identity =
9811                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9812                ICoreWebView2Controller2_Impl::DefaultBackgroundColor(
9813                    this,
9814                    core::mem::transmute_copy(&value),
9815                )
9816                .into()
9817            }
9818        }
9819        unsafe extern "system" fn SetDefaultBackgroundColor<
9820            Identity: ICoreWebView2Controller2_Impl,
9821            const OFFSET: isize,
9822        >(
9823            this: *mut core::ffi::c_void,
9824            value: COREWEBVIEW2_COLOR,
9825        ) -> windows_core::HRESULT {
9826            unsafe {
9827                let this: &Identity =
9828                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9829                ICoreWebView2Controller2_Impl::SetDefaultBackgroundColor(
9830                    this,
9831                    core::mem::transmute(&value),
9832                )
9833                .into()
9834            }
9835        }
9836        Self {
9837            base__: ICoreWebView2Controller_Vtbl::new::<Identity, OFFSET>(),
9838            DefaultBackgroundColor: DefaultBackgroundColor::<Identity, OFFSET>,
9839            SetDefaultBackgroundColor: SetDefaultBackgroundColor::<Identity, OFFSET>,
9840        }
9841    }
9842    pub fn matches(iid: &windows_core::GUID) -> bool {
9843        iid == &<ICoreWebView2Controller2 as windows_core::Interface>::IID
9844            || iid == &<ICoreWebView2Controller as windows_core::Interface>::IID
9845    }
9846}
9847impl windows_core::RuntimeName for ICoreWebView2Controller2 {}
9848windows_core::imp::define_interface!(
9849    ICoreWebView2Controller3,
9850    ICoreWebView2Controller3_Vtbl,
9851    0xf9614724_5d2b_41dc_aef7_73d62b51543b
9852);
9853impl core::ops::Deref for ICoreWebView2Controller3 {
9854    type Target = ICoreWebView2Controller2;
9855    fn deref(&self) -> &Self::Target {
9856        unsafe { core::mem::transmute(self) }
9857    }
9858}
9859windows_core::imp::interface_hierarchy!(
9860    ICoreWebView2Controller3,
9861    windows_core::IUnknown,
9862    ICoreWebView2Controller,
9863    ICoreWebView2Controller2
9864);
9865impl ICoreWebView2Controller3 {
9866    pub unsafe fn RasterizationScale(&self, scale: *mut f64) -> windows_core::Result<()> {
9867        unsafe {
9868            (windows_core::Interface::vtable(self).RasterizationScale)(
9869                windows_core::Interface::as_raw(self),
9870                scale as _,
9871            )
9872            .ok()
9873        }
9874    }
9875    pub unsafe fn SetRasterizationScale(&self, scale: f64) -> windows_core::Result<()> {
9876        unsafe {
9877            (windows_core::Interface::vtable(self).SetRasterizationScale)(
9878                windows_core::Interface::as_raw(self),
9879                scale,
9880            )
9881            .ok()
9882        }
9883    }
9884    pub unsafe fn ShouldDetectMonitorScaleChanges(
9885        &self,
9886        value: *mut windows_core::BOOL,
9887    ) -> windows_core::Result<()> {
9888        unsafe {
9889            (windows_core::Interface::vtable(self).ShouldDetectMonitorScaleChanges)(
9890                windows_core::Interface::as_raw(self),
9891                value as _,
9892            )
9893            .ok()
9894        }
9895    }
9896    pub unsafe fn SetShouldDetectMonitorScaleChanges(
9897        &self,
9898        value: bool,
9899    ) -> windows_core::Result<()> {
9900        unsafe {
9901            (windows_core::Interface::vtable(self).SetShouldDetectMonitorScaleChanges)(
9902                windows_core::Interface::as_raw(self),
9903                value.into(),
9904            )
9905            .ok()
9906        }
9907    }
9908    pub unsafe fn add_RasterizationScaleChanged<P0>(
9909        &self,
9910        eventhandler: P0,
9911        token: *mut i64,
9912    ) -> windows_core::Result<()>
9913    where
9914        P0: windows_core::Param<ICoreWebView2RasterizationScaleChangedEventHandler>,
9915    {
9916        unsafe {
9917            (windows_core::Interface::vtable(self).add_RasterizationScaleChanged)(
9918                windows_core::Interface::as_raw(self),
9919                eventhandler.param().abi(),
9920                token as _,
9921            )
9922            .ok()
9923        }
9924    }
9925    pub unsafe fn remove_RasterizationScaleChanged(&self, token: i64) -> windows_core::Result<()> {
9926        unsafe {
9927            (windows_core::Interface::vtable(self).remove_RasterizationScaleChanged)(
9928                windows_core::Interface::as_raw(self),
9929                token,
9930            )
9931            .ok()
9932        }
9933    }
9934    pub unsafe fn BoundsMode(
9935        &self,
9936        boundsmode: *mut COREWEBVIEW2_BOUNDS_MODE,
9937    ) -> windows_core::Result<()> {
9938        unsafe {
9939            (windows_core::Interface::vtable(self).BoundsMode)(
9940                windows_core::Interface::as_raw(self),
9941                boundsmode as _,
9942            )
9943            .ok()
9944        }
9945    }
9946    pub unsafe fn SetBoundsMode(
9947        &self,
9948        boundsmode: COREWEBVIEW2_BOUNDS_MODE,
9949    ) -> windows_core::Result<()> {
9950        unsafe {
9951            (windows_core::Interface::vtable(self).SetBoundsMode)(
9952                windows_core::Interface::as_raw(self),
9953                boundsmode,
9954            )
9955            .ok()
9956        }
9957    }
9958}
9959#[repr(C)]
9960#[doc(hidden)]
9961pub struct ICoreWebView2Controller3_Vtbl {
9962    pub base__: ICoreWebView2Controller2_Vtbl,
9963    pub RasterizationScale:
9964        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
9965    pub SetRasterizationScale:
9966        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
9967    pub ShouldDetectMonitorScaleChanges: unsafe extern "system" fn(
9968        *mut core::ffi::c_void,
9969        *mut windows_core::BOOL,
9970    ) -> windows_core::HRESULT,
9971    pub SetShouldDetectMonitorScaleChanges: unsafe extern "system" fn(
9972        *mut core::ffi::c_void,
9973        windows_core::BOOL,
9974    ) -> windows_core::HRESULT,
9975    pub add_RasterizationScaleChanged: unsafe extern "system" fn(
9976        *mut core::ffi::c_void,
9977        *mut core::ffi::c_void,
9978        *mut i64,
9979    ) -> windows_core::HRESULT,
9980    pub remove_RasterizationScaleChanged:
9981        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
9982    pub BoundsMode: unsafe extern "system" fn(
9983        *mut core::ffi::c_void,
9984        *mut COREWEBVIEW2_BOUNDS_MODE,
9985    ) -> windows_core::HRESULT,
9986    pub SetBoundsMode: unsafe extern "system" fn(
9987        *mut core::ffi::c_void,
9988        COREWEBVIEW2_BOUNDS_MODE,
9989    ) -> windows_core::HRESULT,
9990}
9991pub trait ICoreWebView2Controller3_Impl: ICoreWebView2Controller2_Impl {
9992    fn RasterizationScale(&self, scale: *mut f64) -> windows_core::Result<()>;
9993    fn SetRasterizationScale(&self, scale: f64) -> windows_core::Result<()>;
9994    fn ShouldDetectMonitorScaleChanges(
9995        &self,
9996        value: *mut windows_core::BOOL,
9997    ) -> windows_core::Result<()>;
9998    fn SetShouldDetectMonitorScaleChanges(
9999        &self,
10000        value: windows_core::BOOL,
10001    ) -> windows_core::Result<()>;
10002    fn add_RasterizationScaleChanged(
10003        &self,
10004        eventhandler: windows_core::Ref<'_, ICoreWebView2RasterizationScaleChangedEventHandler>,
10005        token: *mut i64,
10006    ) -> windows_core::Result<()>;
10007    fn remove_RasterizationScaleChanged(&self, token: i64) -> windows_core::Result<()>;
10008    fn BoundsMode(&self, boundsmode: *mut COREWEBVIEW2_BOUNDS_MODE) -> windows_core::Result<()>;
10009    fn SetBoundsMode(&self, boundsmode: COREWEBVIEW2_BOUNDS_MODE) -> windows_core::Result<()>;
10010}
10011impl ICoreWebView2Controller3_Vtbl {
10012    pub const fn new<Identity: ICoreWebView2Controller3_Impl, const OFFSET: isize>() -> Self {
10013        unsafe extern "system" fn RasterizationScale<
10014            Identity: ICoreWebView2Controller3_Impl,
10015            const OFFSET: isize,
10016        >(
10017            this: *mut core::ffi::c_void,
10018            scale: *mut f64,
10019        ) -> windows_core::HRESULT {
10020            unsafe {
10021                let this: &Identity =
10022                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10023                ICoreWebView2Controller3_Impl::RasterizationScale(
10024                    this,
10025                    core::mem::transmute_copy(&scale),
10026                )
10027                .into()
10028            }
10029        }
10030        unsafe extern "system" fn SetRasterizationScale<
10031            Identity: ICoreWebView2Controller3_Impl,
10032            const OFFSET: isize,
10033        >(
10034            this: *mut core::ffi::c_void,
10035            scale: f64,
10036        ) -> windows_core::HRESULT {
10037            unsafe {
10038                let this: &Identity =
10039                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10040                ICoreWebView2Controller3_Impl::SetRasterizationScale(
10041                    this,
10042                    core::mem::transmute_copy(&scale),
10043                )
10044                .into()
10045            }
10046        }
10047        unsafe extern "system" fn ShouldDetectMonitorScaleChanges<
10048            Identity: ICoreWebView2Controller3_Impl,
10049            const OFFSET: isize,
10050        >(
10051            this: *mut core::ffi::c_void,
10052            value: *mut windows_core::BOOL,
10053        ) -> windows_core::HRESULT {
10054            unsafe {
10055                let this: &Identity =
10056                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10057                ICoreWebView2Controller3_Impl::ShouldDetectMonitorScaleChanges(
10058                    this,
10059                    core::mem::transmute_copy(&value),
10060                )
10061                .into()
10062            }
10063        }
10064        unsafe extern "system" fn SetShouldDetectMonitorScaleChanges<
10065            Identity: ICoreWebView2Controller3_Impl,
10066            const OFFSET: isize,
10067        >(
10068            this: *mut core::ffi::c_void,
10069            value: windows_core::BOOL,
10070        ) -> windows_core::HRESULT {
10071            unsafe {
10072                let this: &Identity =
10073                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10074                ICoreWebView2Controller3_Impl::SetShouldDetectMonitorScaleChanges(
10075                    this,
10076                    core::mem::transmute_copy(&value),
10077                )
10078                .into()
10079            }
10080        }
10081        unsafe extern "system" fn add_RasterizationScaleChanged<
10082            Identity: ICoreWebView2Controller3_Impl,
10083            const OFFSET: isize,
10084        >(
10085            this: *mut core::ffi::c_void,
10086            eventhandler: *mut core::ffi::c_void,
10087            token: *mut i64,
10088        ) -> windows_core::HRESULT {
10089            unsafe {
10090                let this: &Identity =
10091                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10092                ICoreWebView2Controller3_Impl::add_RasterizationScaleChanged(
10093                    this,
10094                    core::mem::transmute_copy(&eventhandler),
10095                    core::mem::transmute_copy(&token),
10096                )
10097                .into()
10098            }
10099        }
10100        unsafe extern "system" fn remove_RasterizationScaleChanged<
10101            Identity: ICoreWebView2Controller3_Impl,
10102            const OFFSET: isize,
10103        >(
10104            this: *mut core::ffi::c_void,
10105            token: i64,
10106        ) -> windows_core::HRESULT {
10107            unsafe {
10108                let this: &Identity =
10109                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10110                ICoreWebView2Controller3_Impl::remove_RasterizationScaleChanged(
10111                    this,
10112                    core::mem::transmute_copy(&token),
10113                )
10114                .into()
10115            }
10116        }
10117        unsafe extern "system" fn BoundsMode<
10118            Identity: ICoreWebView2Controller3_Impl,
10119            const OFFSET: isize,
10120        >(
10121            this: *mut core::ffi::c_void,
10122            boundsmode: *mut COREWEBVIEW2_BOUNDS_MODE,
10123        ) -> windows_core::HRESULT {
10124            unsafe {
10125                let this: &Identity =
10126                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10127                ICoreWebView2Controller3_Impl::BoundsMode(
10128                    this,
10129                    core::mem::transmute_copy(&boundsmode),
10130                )
10131                .into()
10132            }
10133        }
10134        unsafe extern "system" fn SetBoundsMode<
10135            Identity: ICoreWebView2Controller3_Impl,
10136            const OFFSET: isize,
10137        >(
10138            this: *mut core::ffi::c_void,
10139            boundsmode: COREWEBVIEW2_BOUNDS_MODE,
10140        ) -> windows_core::HRESULT {
10141            unsafe {
10142                let this: &Identity =
10143                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10144                ICoreWebView2Controller3_Impl::SetBoundsMode(
10145                    this,
10146                    core::mem::transmute_copy(&boundsmode),
10147                )
10148                .into()
10149            }
10150        }
10151        Self {
10152            base__: ICoreWebView2Controller2_Vtbl::new::<Identity, OFFSET>(),
10153            RasterizationScale: RasterizationScale::<Identity, OFFSET>,
10154            SetRasterizationScale: SetRasterizationScale::<Identity, OFFSET>,
10155            ShouldDetectMonitorScaleChanges: ShouldDetectMonitorScaleChanges::<Identity, OFFSET>,
10156            SetShouldDetectMonitorScaleChanges: SetShouldDetectMonitorScaleChanges::<
10157                Identity,
10158                OFFSET,
10159            >,
10160            add_RasterizationScaleChanged: add_RasterizationScaleChanged::<Identity, OFFSET>,
10161            remove_RasterizationScaleChanged: remove_RasterizationScaleChanged::<Identity, OFFSET>,
10162            BoundsMode: BoundsMode::<Identity, OFFSET>,
10163            SetBoundsMode: SetBoundsMode::<Identity, OFFSET>,
10164        }
10165    }
10166    pub fn matches(iid: &windows_core::GUID) -> bool {
10167        iid == &<ICoreWebView2Controller3 as windows_core::Interface>::IID
10168            || iid == &<ICoreWebView2Controller as windows_core::Interface>::IID
10169            || iid == &<ICoreWebView2Controller2 as windows_core::Interface>::IID
10170    }
10171}
10172impl windows_core::RuntimeName for ICoreWebView2Controller3 {}
10173windows_core::imp::define_interface!(
10174    ICoreWebView2Controller4,
10175    ICoreWebView2Controller4_Vtbl,
10176    0x97d418d5_a426_4e49_a151_e1a10f327d9e
10177);
10178impl core::ops::Deref for ICoreWebView2Controller4 {
10179    type Target = ICoreWebView2Controller3;
10180    fn deref(&self) -> &Self::Target {
10181        unsafe { core::mem::transmute(self) }
10182    }
10183}
10184windows_core::imp::interface_hierarchy!(
10185    ICoreWebView2Controller4,
10186    windows_core::IUnknown,
10187    ICoreWebView2Controller,
10188    ICoreWebView2Controller2,
10189    ICoreWebView2Controller3
10190);
10191impl ICoreWebView2Controller4 {
10192    pub unsafe fn AllowExternalDrop(
10193        &self,
10194        value: *mut windows_core::BOOL,
10195    ) -> windows_core::Result<()> {
10196        unsafe {
10197            (windows_core::Interface::vtable(self).AllowExternalDrop)(
10198                windows_core::Interface::as_raw(self),
10199                value as _,
10200            )
10201            .ok()
10202        }
10203    }
10204    pub unsafe fn SetAllowExternalDrop(&self, value: bool) -> windows_core::Result<()> {
10205        unsafe {
10206            (windows_core::Interface::vtable(self).SetAllowExternalDrop)(
10207                windows_core::Interface::as_raw(self),
10208                value.into(),
10209            )
10210            .ok()
10211        }
10212    }
10213}
10214#[repr(C)]
10215#[doc(hidden)]
10216pub struct ICoreWebView2Controller4_Vtbl {
10217    pub base__: ICoreWebView2Controller3_Vtbl,
10218    pub AllowExternalDrop: unsafe extern "system" fn(
10219        *mut core::ffi::c_void,
10220        *mut windows_core::BOOL,
10221    ) -> windows_core::HRESULT,
10222    pub SetAllowExternalDrop: unsafe extern "system" fn(
10223        *mut core::ffi::c_void,
10224        windows_core::BOOL,
10225    ) -> windows_core::HRESULT,
10226}
10227pub trait ICoreWebView2Controller4_Impl: ICoreWebView2Controller3_Impl {
10228    fn AllowExternalDrop(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
10229    fn SetAllowExternalDrop(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
10230}
10231impl ICoreWebView2Controller4_Vtbl {
10232    pub const fn new<Identity: ICoreWebView2Controller4_Impl, const OFFSET: isize>() -> Self {
10233        unsafe extern "system" fn AllowExternalDrop<
10234            Identity: ICoreWebView2Controller4_Impl,
10235            const OFFSET: isize,
10236        >(
10237            this: *mut core::ffi::c_void,
10238            value: *mut windows_core::BOOL,
10239        ) -> windows_core::HRESULT {
10240            unsafe {
10241                let this: &Identity =
10242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10243                ICoreWebView2Controller4_Impl::AllowExternalDrop(
10244                    this,
10245                    core::mem::transmute_copy(&value),
10246                )
10247                .into()
10248            }
10249        }
10250        unsafe extern "system" fn SetAllowExternalDrop<
10251            Identity: ICoreWebView2Controller4_Impl,
10252            const OFFSET: isize,
10253        >(
10254            this: *mut core::ffi::c_void,
10255            value: windows_core::BOOL,
10256        ) -> windows_core::HRESULT {
10257            unsafe {
10258                let this: &Identity =
10259                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10260                ICoreWebView2Controller4_Impl::SetAllowExternalDrop(
10261                    this,
10262                    core::mem::transmute_copy(&value),
10263                )
10264                .into()
10265            }
10266        }
10267        Self {
10268            base__: ICoreWebView2Controller3_Vtbl::new::<Identity, OFFSET>(),
10269            AllowExternalDrop: AllowExternalDrop::<Identity, OFFSET>,
10270            SetAllowExternalDrop: SetAllowExternalDrop::<Identity, OFFSET>,
10271        }
10272    }
10273    pub fn matches(iid: &windows_core::GUID) -> bool {
10274        iid == &<ICoreWebView2Controller4 as windows_core::Interface>::IID
10275            || iid == &<ICoreWebView2Controller as windows_core::Interface>::IID
10276            || iid == &<ICoreWebView2Controller2 as windows_core::Interface>::IID
10277            || iid == &<ICoreWebView2Controller3 as windows_core::Interface>::IID
10278    }
10279}
10280impl windows_core::RuntimeName for ICoreWebView2Controller4 {}
10281windows_core::imp::define_interface!(
10282    ICoreWebView2ControllerOptions,
10283    ICoreWebView2ControllerOptions_Vtbl,
10284    0x12aae616_8ccb_44ec_bcb3_eb1831881635
10285);
10286windows_core::imp::interface_hierarchy!(ICoreWebView2ControllerOptions, windows_core::IUnknown);
10287impl ICoreWebView2ControllerOptions {
10288    pub unsafe fn ProfileName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
10289        unsafe {
10290            (windows_core::Interface::vtable(self).ProfileName)(
10291                windows_core::Interface::as_raw(self),
10292                value as _,
10293            )
10294            .ok()
10295        }
10296    }
10297    pub unsafe fn SetProfileName<P0>(&self, value: P0) -> windows_core::Result<()>
10298    where
10299        P0: windows_core::Param<windows_core::PCWSTR>,
10300    {
10301        unsafe {
10302            (windows_core::Interface::vtable(self).SetProfileName)(
10303                windows_core::Interface::as_raw(self),
10304                value.param().abi(),
10305            )
10306            .ok()
10307        }
10308    }
10309    pub unsafe fn IsInPrivateModeEnabled(
10310        &self,
10311        value: *mut windows_core::BOOL,
10312    ) -> windows_core::Result<()> {
10313        unsafe {
10314            (windows_core::Interface::vtable(self).IsInPrivateModeEnabled)(
10315                windows_core::Interface::as_raw(self),
10316                value as _,
10317            )
10318            .ok()
10319        }
10320    }
10321    pub unsafe fn SetIsInPrivateModeEnabled(&self, value: bool) -> windows_core::Result<()> {
10322        unsafe {
10323            (windows_core::Interface::vtable(self).SetIsInPrivateModeEnabled)(
10324                windows_core::Interface::as_raw(self),
10325                value.into(),
10326            )
10327            .ok()
10328        }
10329    }
10330}
10331#[repr(C)]
10332#[doc(hidden)]
10333pub struct ICoreWebView2ControllerOptions_Vtbl {
10334    pub base__: windows_core::IUnknown_Vtbl,
10335    pub ProfileName: unsafe extern "system" fn(
10336        *mut core::ffi::c_void,
10337        *mut windows_core::PWSTR,
10338    ) -> windows_core::HRESULT,
10339    pub SetProfileName: unsafe extern "system" fn(
10340        *mut core::ffi::c_void,
10341        windows_core::PCWSTR,
10342    ) -> windows_core::HRESULT,
10343    pub IsInPrivateModeEnabled: unsafe extern "system" fn(
10344        *mut core::ffi::c_void,
10345        *mut windows_core::BOOL,
10346    ) -> windows_core::HRESULT,
10347    pub SetIsInPrivateModeEnabled: unsafe extern "system" fn(
10348        *mut core::ffi::c_void,
10349        windows_core::BOOL,
10350    ) -> windows_core::HRESULT,
10351}
10352pub trait ICoreWebView2ControllerOptions_Impl: windows_core::IUnknownImpl {
10353    fn ProfileName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
10354    fn SetProfileName(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
10355    fn IsInPrivateModeEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
10356    fn SetIsInPrivateModeEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
10357}
10358impl ICoreWebView2ControllerOptions_Vtbl {
10359    pub const fn new<Identity: ICoreWebView2ControllerOptions_Impl, const OFFSET: isize>() -> Self {
10360        unsafe extern "system" fn ProfileName<
10361            Identity: ICoreWebView2ControllerOptions_Impl,
10362            const OFFSET: isize,
10363        >(
10364            this: *mut core::ffi::c_void,
10365            value: *mut windows_core::PWSTR,
10366        ) -> windows_core::HRESULT {
10367            unsafe {
10368                let this: &Identity =
10369                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10370                ICoreWebView2ControllerOptions_Impl::ProfileName(
10371                    this,
10372                    core::mem::transmute_copy(&value),
10373                )
10374                .into()
10375            }
10376        }
10377        unsafe extern "system" fn SetProfileName<
10378            Identity: ICoreWebView2ControllerOptions_Impl,
10379            const OFFSET: isize,
10380        >(
10381            this: *mut core::ffi::c_void,
10382            value: windows_core::PCWSTR,
10383        ) -> windows_core::HRESULT {
10384            unsafe {
10385                let this: &Identity =
10386                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10387                ICoreWebView2ControllerOptions_Impl::SetProfileName(
10388                    this,
10389                    core::mem::transmute(&value),
10390                )
10391                .into()
10392            }
10393        }
10394        unsafe extern "system" fn IsInPrivateModeEnabled<
10395            Identity: ICoreWebView2ControllerOptions_Impl,
10396            const OFFSET: isize,
10397        >(
10398            this: *mut core::ffi::c_void,
10399            value: *mut windows_core::BOOL,
10400        ) -> windows_core::HRESULT {
10401            unsafe {
10402                let this: &Identity =
10403                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10404                ICoreWebView2ControllerOptions_Impl::IsInPrivateModeEnabled(
10405                    this,
10406                    core::mem::transmute_copy(&value),
10407                )
10408                .into()
10409            }
10410        }
10411        unsafe extern "system" fn SetIsInPrivateModeEnabled<
10412            Identity: ICoreWebView2ControllerOptions_Impl,
10413            const OFFSET: isize,
10414        >(
10415            this: *mut core::ffi::c_void,
10416            value: windows_core::BOOL,
10417        ) -> windows_core::HRESULT {
10418            unsafe {
10419                let this: &Identity =
10420                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10421                ICoreWebView2ControllerOptions_Impl::SetIsInPrivateModeEnabled(
10422                    this,
10423                    core::mem::transmute_copy(&value),
10424                )
10425                .into()
10426            }
10427        }
10428        Self {
10429            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
10430            ProfileName: ProfileName::<Identity, OFFSET>,
10431            SetProfileName: SetProfileName::<Identity, OFFSET>,
10432            IsInPrivateModeEnabled: IsInPrivateModeEnabled::<Identity, OFFSET>,
10433            SetIsInPrivateModeEnabled: SetIsInPrivateModeEnabled::<Identity, OFFSET>,
10434        }
10435    }
10436    pub fn matches(iid: &windows_core::GUID) -> bool {
10437        iid == &<ICoreWebView2ControllerOptions as windows_core::Interface>::IID
10438    }
10439}
10440impl windows_core::RuntimeName for ICoreWebView2ControllerOptions {}
10441windows_core::imp::define_interface!(
10442    ICoreWebView2ControllerOptions2,
10443    ICoreWebView2ControllerOptions2_Vtbl,
10444    0x06c991d8_9e7e_11ed_a8fc_0242ac120002
10445);
10446impl core::ops::Deref for ICoreWebView2ControllerOptions2 {
10447    type Target = ICoreWebView2ControllerOptions;
10448    fn deref(&self) -> &Self::Target {
10449        unsafe { core::mem::transmute(self) }
10450    }
10451}
10452windows_core::imp::interface_hierarchy!(
10453    ICoreWebView2ControllerOptions2,
10454    windows_core::IUnknown,
10455    ICoreWebView2ControllerOptions
10456);
10457impl ICoreWebView2ControllerOptions2 {
10458    pub unsafe fn ScriptLocale(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
10459        unsafe {
10460            (windows_core::Interface::vtable(self).ScriptLocale)(
10461                windows_core::Interface::as_raw(self),
10462                value as _,
10463            )
10464            .ok()
10465        }
10466    }
10467    pub unsafe fn SetScriptLocale<P0>(&self, value: P0) -> windows_core::Result<()>
10468    where
10469        P0: windows_core::Param<windows_core::PCWSTR>,
10470    {
10471        unsafe {
10472            (windows_core::Interface::vtable(self).SetScriptLocale)(
10473                windows_core::Interface::as_raw(self),
10474                value.param().abi(),
10475            )
10476            .ok()
10477        }
10478    }
10479}
10480#[repr(C)]
10481#[doc(hidden)]
10482pub struct ICoreWebView2ControllerOptions2_Vtbl {
10483    pub base__: ICoreWebView2ControllerOptions_Vtbl,
10484    pub ScriptLocale: unsafe extern "system" fn(
10485        *mut core::ffi::c_void,
10486        *mut windows_core::PWSTR,
10487    ) -> windows_core::HRESULT,
10488    pub SetScriptLocale: unsafe extern "system" fn(
10489        *mut core::ffi::c_void,
10490        windows_core::PCWSTR,
10491    ) -> windows_core::HRESULT,
10492}
10493pub trait ICoreWebView2ControllerOptions2_Impl: ICoreWebView2ControllerOptions_Impl {
10494    fn ScriptLocale(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
10495    fn SetScriptLocale(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
10496}
10497impl ICoreWebView2ControllerOptions2_Vtbl {
10498    pub const fn new<Identity: ICoreWebView2ControllerOptions2_Impl, const OFFSET: isize>() -> Self
10499    {
10500        unsafe extern "system" fn ScriptLocale<
10501            Identity: ICoreWebView2ControllerOptions2_Impl,
10502            const OFFSET: isize,
10503        >(
10504            this: *mut core::ffi::c_void,
10505            value: *mut windows_core::PWSTR,
10506        ) -> windows_core::HRESULT {
10507            unsafe {
10508                let this: &Identity =
10509                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10510                ICoreWebView2ControllerOptions2_Impl::ScriptLocale(
10511                    this,
10512                    core::mem::transmute_copy(&value),
10513                )
10514                .into()
10515            }
10516        }
10517        unsafe extern "system" fn SetScriptLocale<
10518            Identity: ICoreWebView2ControllerOptions2_Impl,
10519            const OFFSET: isize,
10520        >(
10521            this: *mut core::ffi::c_void,
10522            value: windows_core::PCWSTR,
10523        ) -> windows_core::HRESULT {
10524            unsafe {
10525                let this: &Identity =
10526                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10527                ICoreWebView2ControllerOptions2_Impl::SetScriptLocale(
10528                    this,
10529                    core::mem::transmute(&value),
10530                )
10531                .into()
10532            }
10533        }
10534        Self {
10535            base__: ICoreWebView2ControllerOptions_Vtbl::new::<Identity, OFFSET>(),
10536            ScriptLocale: ScriptLocale::<Identity, OFFSET>,
10537            SetScriptLocale: SetScriptLocale::<Identity, OFFSET>,
10538        }
10539    }
10540    pub fn matches(iid: &windows_core::GUID) -> bool {
10541        iid == &<ICoreWebView2ControllerOptions2 as windows_core::Interface>::IID
10542            || iid == &<ICoreWebView2ControllerOptions as windows_core::Interface>::IID
10543    }
10544}
10545impl windows_core::RuntimeName for ICoreWebView2ControllerOptions2 {}
10546windows_core::imp::define_interface!(
10547    ICoreWebView2ControllerOptions3,
10548    ICoreWebView2ControllerOptions3_Vtbl,
10549    0xb32b191a_8998_57ca_b7cb_e04617e4ce4a
10550);
10551impl core::ops::Deref for ICoreWebView2ControllerOptions3 {
10552    type Target = ICoreWebView2ControllerOptions2;
10553    fn deref(&self) -> &Self::Target {
10554        unsafe { core::mem::transmute(self) }
10555    }
10556}
10557windows_core::imp::interface_hierarchy!(
10558    ICoreWebView2ControllerOptions3,
10559    windows_core::IUnknown,
10560    ICoreWebView2ControllerOptions,
10561    ICoreWebView2ControllerOptions2
10562);
10563impl ICoreWebView2ControllerOptions3 {
10564    pub unsafe fn DefaultBackgroundColor(
10565        &self,
10566        value: *mut COREWEBVIEW2_COLOR,
10567    ) -> windows_core::Result<()> {
10568        unsafe {
10569            (windows_core::Interface::vtable(self).DefaultBackgroundColor)(
10570                windows_core::Interface::as_raw(self),
10571                value as _,
10572            )
10573            .ok()
10574        }
10575    }
10576    pub unsafe fn SetDefaultBackgroundColor(
10577        &self,
10578        value: COREWEBVIEW2_COLOR,
10579    ) -> windows_core::Result<()> {
10580        unsafe {
10581            (windows_core::Interface::vtable(self).SetDefaultBackgroundColor)(
10582                windows_core::Interface::as_raw(self),
10583                core::mem::transmute(value),
10584            )
10585            .ok()
10586        }
10587    }
10588}
10589#[repr(C)]
10590#[doc(hidden)]
10591pub struct ICoreWebView2ControllerOptions3_Vtbl {
10592    pub base__: ICoreWebView2ControllerOptions2_Vtbl,
10593    pub DefaultBackgroundColor: unsafe extern "system" fn(
10594        *mut core::ffi::c_void,
10595        *mut COREWEBVIEW2_COLOR,
10596    ) -> windows_core::HRESULT,
10597    pub SetDefaultBackgroundColor: unsafe extern "system" fn(
10598        *mut core::ffi::c_void,
10599        COREWEBVIEW2_COLOR,
10600    ) -> windows_core::HRESULT,
10601}
10602pub trait ICoreWebView2ControllerOptions3_Impl: ICoreWebView2ControllerOptions2_Impl {
10603    fn DefaultBackgroundColor(&self, value: *mut COREWEBVIEW2_COLOR) -> windows_core::Result<()>;
10604    fn SetDefaultBackgroundColor(&self, value: &COREWEBVIEW2_COLOR) -> windows_core::Result<()>;
10605}
10606impl ICoreWebView2ControllerOptions3_Vtbl {
10607    pub const fn new<Identity: ICoreWebView2ControllerOptions3_Impl, const OFFSET: isize>() -> Self
10608    {
10609        unsafe extern "system" fn DefaultBackgroundColor<
10610            Identity: ICoreWebView2ControllerOptions3_Impl,
10611            const OFFSET: isize,
10612        >(
10613            this: *mut core::ffi::c_void,
10614            value: *mut COREWEBVIEW2_COLOR,
10615        ) -> windows_core::HRESULT {
10616            unsafe {
10617                let this: &Identity =
10618                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10619                ICoreWebView2ControllerOptions3_Impl::DefaultBackgroundColor(
10620                    this,
10621                    core::mem::transmute_copy(&value),
10622                )
10623                .into()
10624            }
10625        }
10626        unsafe extern "system" fn SetDefaultBackgroundColor<
10627            Identity: ICoreWebView2ControllerOptions3_Impl,
10628            const OFFSET: isize,
10629        >(
10630            this: *mut core::ffi::c_void,
10631            value: COREWEBVIEW2_COLOR,
10632        ) -> windows_core::HRESULT {
10633            unsafe {
10634                let this: &Identity =
10635                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10636                ICoreWebView2ControllerOptions3_Impl::SetDefaultBackgroundColor(
10637                    this,
10638                    core::mem::transmute(&value),
10639                )
10640                .into()
10641            }
10642        }
10643        Self {
10644            base__: ICoreWebView2ControllerOptions2_Vtbl::new::<Identity, OFFSET>(),
10645            DefaultBackgroundColor: DefaultBackgroundColor::<Identity, OFFSET>,
10646            SetDefaultBackgroundColor: SetDefaultBackgroundColor::<Identity, OFFSET>,
10647        }
10648    }
10649    pub fn matches(iid: &windows_core::GUID) -> bool {
10650        iid == &<ICoreWebView2ControllerOptions3 as windows_core::Interface>::IID
10651            || iid == &<ICoreWebView2ControllerOptions as windows_core::Interface>::IID
10652            || iid == &<ICoreWebView2ControllerOptions2 as windows_core::Interface>::IID
10653    }
10654}
10655impl windows_core::RuntimeName for ICoreWebView2ControllerOptions3 {}
10656windows_core::imp::define_interface!(
10657    ICoreWebView2ControllerOptions4,
10658    ICoreWebView2ControllerOptions4_Vtbl,
10659    0x21eb052f_ad39_555e_824a_c87b091d4d36
10660);
10661impl core::ops::Deref for ICoreWebView2ControllerOptions4 {
10662    type Target = ICoreWebView2ControllerOptions3;
10663    fn deref(&self) -> &Self::Target {
10664        unsafe { core::mem::transmute(self) }
10665    }
10666}
10667windows_core::imp::interface_hierarchy!(
10668    ICoreWebView2ControllerOptions4,
10669    windows_core::IUnknown,
10670    ICoreWebView2ControllerOptions,
10671    ICoreWebView2ControllerOptions2,
10672    ICoreWebView2ControllerOptions3
10673);
10674impl ICoreWebView2ControllerOptions4 {
10675    pub unsafe fn AllowHostInputProcessing(
10676        &self,
10677        value: *mut windows_core::BOOL,
10678    ) -> windows_core::Result<()> {
10679        unsafe {
10680            (windows_core::Interface::vtable(self).AllowHostInputProcessing)(
10681                windows_core::Interface::as_raw(self),
10682                value as _,
10683            )
10684            .ok()
10685        }
10686    }
10687    pub unsafe fn SetAllowHostInputProcessing(&self, value: bool) -> windows_core::Result<()> {
10688        unsafe {
10689            (windows_core::Interface::vtable(self).SetAllowHostInputProcessing)(
10690                windows_core::Interface::as_raw(self),
10691                value.into(),
10692            )
10693            .ok()
10694        }
10695    }
10696}
10697#[repr(C)]
10698#[doc(hidden)]
10699pub struct ICoreWebView2ControllerOptions4_Vtbl {
10700    pub base__: ICoreWebView2ControllerOptions3_Vtbl,
10701    pub AllowHostInputProcessing: unsafe extern "system" fn(
10702        *mut core::ffi::c_void,
10703        *mut windows_core::BOOL,
10704    ) -> windows_core::HRESULT,
10705    pub SetAllowHostInputProcessing: unsafe extern "system" fn(
10706        *mut core::ffi::c_void,
10707        windows_core::BOOL,
10708    ) -> windows_core::HRESULT,
10709}
10710pub trait ICoreWebView2ControllerOptions4_Impl: ICoreWebView2ControllerOptions3_Impl {
10711    fn AllowHostInputProcessing(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
10712    fn SetAllowHostInputProcessing(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
10713}
10714impl ICoreWebView2ControllerOptions4_Vtbl {
10715    pub const fn new<Identity: ICoreWebView2ControllerOptions4_Impl, const OFFSET: isize>() -> Self
10716    {
10717        unsafe extern "system" fn AllowHostInputProcessing<
10718            Identity: ICoreWebView2ControllerOptions4_Impl,
10719            const OFFSET: isize,
10720        >(
10721            this: *mut core::ffi::c_void,
10722            value: *mut windows_core::BOOL,
10723        ) -> windows_core::HRESULT {
10724            unsafe {
10725                let this: &Identity =
10726                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10727                ICoreWebView2ControllerOptions4_Impl::AllowHostInputProcessing(
10728                    this,
10729                    core::mem::transmute_copy(&value),
10730                )
10731                .into()
10732            }
10733        }
10734        unsafe extern "system" fn SetAllowHostInputProcessing<
10735            Identity: ICoreWebView2ControllerOptions4_Impl,
10736            const OFFSET: isize,
10737        >(
10738            this: *mut core::ffi::c_void,
10739            value: windows_core::BOOL,
10740        ) -> windows_core::HRESULT {
10741            unsafe {
10742                let this: &Identity =
10743                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10744                ICoreWebView2ControllerOptions4_Impl::SetAllowHostInputProcessing(
10745                    this,
10746                    core::mem::transmute_copy(&value),
10747                )
10748                .into()
10749            }
10750        }
10751        Self {
10752            base__: ICoreWebView2ControllerOptions3_Vtbl::new::<Identity, OFFSET>(),
10753            AllowHostInputProcessing: AllowHostInputProcessing::<Identity, OFFSET>,
10754            SetAllowHostInputProcessing: SetAllowHostInputProcessing::<Identity, OFFSET>,
10755        }
10756    }
10757    pub fn matches(iid: &windows_core::GUID) -> bool {
10758        iid == &<ICoreWebView2ControllerOptions4 as windows_core::Interface>::IID
10759            || iid == &<ICoreWebView2ControllerOptions as windows_core::Interface>::IID
10760            || iid == &<ICoreWebView2ControllerOptions2 as windows_core::Interface>::IID
10761            || iid == &<ICoreWebView2ControllerOptions3 as windows_core::Interface>::IID
10762    }
10763}
10764impl windows_core::RuntimeName for ICoreWebView2ControllerOptions4 {}
10765windows_core::imp::define_interface!(
10766    ICoreWebView2Cookie,
10767    ICoreWebView2Cookie_Vtbl,
10768    0xad26d6be_1486_43e6_bf87_a2034006ca21
10769);
10770windows_core::imp::interface_hierarchy!(ICoreWebView2Cookie, windows_core::IUnknown);
10771impl ICoreWebView2Cookie {
10772    pub unsafe fn Name(&self, name: *mut windows_core::PWSTR) -> windows_core::Result<()> {
10773        unsafe {
10774            (windows_core::Interface::vtable(self).Name)(
10775                windows_core::Interface::as_raw(self),
10776                name as _,
10777            )
10778            .ok()
10779        }
10780    }
10781    pub unsafe fn Value(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
10782        unsafe {
10783            (windows_core::Interface::vtable(self).Value)(
10784                windows_core::Interface::as_raw(self),
10785                value as _,
10786            )
10787            .ok()
10788        }
10789    }
10790    pub unsafe fn SetValue<P0>(&self, value: P0) -> windows_core::Result<()>
10791    where
10792        P0: windows_core::Param<windows_core::PCWSTR>,
10793    {
10794        unsafe {
10795            (windows_core::Interface::vtable(self).SetValue)(
10796                windows_core::Interface::as_raw(self),
10797                value.param().abi(),
10798            )
10799            .ok()
10800        }
10801    }
10802    pub unsafe fn Domain(&self, domain: *mut windows_core::PWSTR) -> windows_core::Result<()> {
10803        unsafe {
10804            (windows_core::Interface::vtable(self).Domain)(
10805                windows_core::Interface::as_raw(self),
10806                domain as _,
10807            )
10808            .ok()
10809        }
10810    }
10811    pub unsafe fn Path(&self, path: *mut windows_core::PWSTR) -> windows_core::Result<()> {
10812        unsafe {
10813            (windows_core::Interface::vtable(self).Path)(
10814                windows_core::Interface::as_raw(self),
10815                path as _,
10816            )
10817            .ok()
10818        }
10819    }
10820    pub unsafe fn Expires(&self, expires: *mut f64) -> windows_core::Result<()> {
10821        unsafe {
10822            (windows_core::Interface::vtable(self).Expires)(
10823                windows_core::Interface::as_raw(self),
10824                expires as _,
10825            )
10826            .ok()
10827        }
10828    }
10829    pub unsafe fn SetExpires(&self, expires: f64) -> windows_core::Result<()> {
10830        unsafe {
10831            (windows_core::Interface::vtable(self).SetExpires)(
10832                windows_core::Interface::as_raw(self),
10833                expires,
10834            )
10835            .ok()
10836        }
10837    }
10838    pub unsafe fn IsHttpOnly(
10839        &self,
10840        ishttponly: *mut windows_core::BOOL,
10841    ) -> windows_core::Result<()> {
10842        unsafe {
10843            (windows_core::Interface::vtable(self).IsHttpOnly)(
10844                windows_core::Interface::as_raw(self),
10845                ishttponly as _,
10846            )
10847            .ok()
10848        }
10849    }
10850    pub unsafe fn SetIsHttpOnly(&self, ishttponly: bool) -> windows_core::Result<()> {
10851        unsafe {
10852            (windows_core::Interface::vtable(self).SetIsHttpOnly)(
10853                windows_core::Interface::as_raw(self),
10854                ishttponly.into(),
10855            )
10856            .ok()
10857        }
10858    }
10859    pub unsafe fn SameSite(
10860        &self,
10861        samesite: *mut COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
10862    ) -> windows_core::Result<()> {
10863        unsafe {
10864            (windows_core::Interface::vtable(self).SameSite)(
10865                windows_core::Interface::as_raw(self),
10866                samesite as _,
10867            )
10868            .ok()
10869        }
10870    }
10871    pub unsafe fn SetSameSite(
10872        &self,
10873        samesite: COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
10874    ) -> windows_core::Result<()> {
10875        unsafe {
10876            (windows_core::Interface::vtable(self).SetSameSite)(
10877                windows_core::Interface::as_raw(self),
10878                samesite,
10879            )
10880            .ok()
10881        }
10882    }
10883    pub unsafe fn IsSecure(&self, issecure: *mut windows_core::BOOL) -> windows_core::Result<()> {
10884        unsafe {
10885            (windows_core::Interface::vtable(self).IsSecure)(
10886                windows_core::Interface::as_raw(self),
10887                issecure as _,
10888            )
10889            .ok()
10890        }
10891    }
10892    pub unsafe fn SetIsSecure(&self, issecure: bool) -> windows_core::Result<()> {
10893        unsafe {
10894            (windows_core::Interface::vtable(self).SetIsSecure)(
10895                windows_core::Interface::as_raw(self),
10896                issecure.into(),
10897            )
10898            .ok()
10899        }
10900    }
10901    pub unsafe fn IsSession(&self, issession: *mut windows_core::BOOL) -> windows_core::Result<()> {
10902        unsafe {
10903            (windows_core::Interface::vtable(self).IsSession)(
10904                windows_core::Interface::as_raw(self),
10905                issession as _,
10906            )
10907            .ok()
10908        }
10909    }
10910}
10911#[repr(C)]
10912#[doc(hidden)]
10913pub struct ICoreWebView2Cookie_Vtbl {
10914    pub base__: windows_core::IUnknown_Vtbl,
10915    pub Name: unsafe extern "system" fn(
10916        *mut core::ffi::c_void,
10917        *mut windows_core::PWSTR,
10918    ) -> windows_core::HRESULT,
10919    pub Value: unsafe extern "system" fn(
10920        *mut core::ffi::c_void,
10921        *mut windows_core::PWSTR,
10922    ) -> windows_core::HRESULT,
10923    pub SetValue: unsafe extern "system" fn(
10924        *mut core::ffi::c_void,
10925        windows_core::PCWSTR,
10926    ) -> windows_core::HRESULT,
10927    pub Domain: unsafe extern "system" fn(
10928        *mut core::ffi::c_void,
10929        *mut windows_core::PWSTR,
10930    ) -> windows_core::HRESULT,
10931    pub Path: unsafe extern "system" fn(
10932        *mut core::ffi::c_void,
10933        *mut windows_core::PWSTR,
10934    ) -> windows_core::HRESULT,
10935    pub Expires:
10936        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
10937    pub SetExpires: unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
10938    pub IsHttpOnly: unsafe extern "system" fn(
10939        *mut core::ffi::c_void,
10940        *mut windows_core::BOOL,
10941    ) -> windows_core::HRESULT,
10942    pub SetIsHttpOnly: unsafe extern "system" fn(
10943        *mut core::ffi::c_void,
10944        windows_core::BOOL,
10945    ) -> windows_core::HRESULT,
10946    pub SameSite: unsafe extern "system" fn(
10947        *mut core::ffi::c_void,
10948        *mut COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
10949    ) -> windows_core::HRESULT,
10950    pub SetSameSite: unsafe extern "system" fn(
10951        *mut core::ffi::c_void,
10952        COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
10953    ) -> windows_core::HRESULT,
10954    pub IsSecure: unsafe extern "system" fn(
10955        *mut core::ffi::c_void,
10956        *mut windows_core::BOOL,
10957    ) -> windows_core::HRESULT,
10958    pub SetIsSecure: unsafe extern "system" fn(
10959        *mut core::ffi::c_void,
10960        windows_core::BOOL,
10961    ) -> windows_core::HRESULT,
10962    pub IsSession: unsafe extern "system" fn(
10963        *mut core::ffi::c_void,
10964        *mut windows_core::BOOL,
10965    ) -> windows_core::HRESULT,
10966}
10967pub trait ICoreWebView2Cookie_Impl: windows_core::IUnknownImpl {
10968    fn Name(&self, name: *mut windows_core::PWSTR) -> windows_core::Result<()>;
10969    fn Value(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
10970    fn SetValue(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
10971    fn Domain(&self, domain: *mut windows_core::PWSTR) -> windows_core::Result<()>;
10972    fn Path(&self, path: *mut windows_core::PWSTR) -> windows_core::Result<()>;
10973    fn Expires(&self, expires: *mut f64) -> windows_core::Result<()>;
10974    fn SetExpires(&self, expires: f64) -> windows_core::Result<()>;
10975    fn IsHttpOnly(&self, ishttponly: *mut windows_core::BOOL) -> windows_core::Result<()>;
10976    fn SetIsHttpOnly(&self, ishttponly: windows_core::BOOL) -> windows_core::Result<()>;
10977    fn SameSite(
10978        &self,
10979        samesite: *mut COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
10980    ) -> windows_core::Result<()>;
10981    fn SetSameSite(&self, samesite: COREWEBVIEW2_COOKIE_SAME_SITE_KIND)
10982        -> windows_core::Result<()>;
10983    fn IsSecure(&self, issecure: *mut windows_core::BOOL) -> windows_core::Result<()>;
10984    fn SetIsSecure(&self, issecure: windows_core::BOOL) -> windows_core::Result<()>;
10985    fn IsSession(&self, issession: *mut windows_core::BOOL) -> windows_core::Result<()>;
10986}
10987impl ICoreWebView2Cookie_Vtbl {
10988    pub const fn new<Identity: ICoreWebView2Cookie_Impl, const OFFSET: isize>() -> Self {
10989        unsafe extern "system" fn Name<Identity: ICoreWebView2Cookie_Impl, const OFFSET: isize>(
10990            this: *mut core::ffi::c_void,
10991            name: *mut windows_core::PWSTR,
10992        ) -> windows_core::HRESULT {
10993            unsafe {
10994                let this: &Identity =
10995                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10996                ICoreWebView2Cookie_Impl::Name(this, core::mem::transmute_copy(&name)).into()
10997            }
10998        }
10999        unsafe extern "system" fn Value<Identity: ICoreWebView2Cookie_Impl, const OFFSET: isize>(
11000            this: *mut core::ffi::c_void,
11001            value: *mut windows_core::PWSTR,
11002        ) -> windows_core::HRESULT {
11003            unsafe {
11004                let this: &Identity =
11005                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11006                ICoreWebView2Cookie_Impl::Value(this, core::mem::transmute_copy(&value)).into()
11007            }
11008        }
11009        unsafe extern "system" fn SetValue<
11010            Identity: ICoreWebView2Cookie_Impl,
11011            const OFFSET: isize,
11012        >(
11013            this: *mut core::ffi::c_void,
11014            value: windows_core::PCWSTR,
11015        ) -> windows_core::HRESULT {
11016            unsafe {
11017                let this: &Identity =
11018                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11019                ICoreWebView2Cookie_Impl::SetValue(this, core::mem::transmute(&value)).into()
11020            }
11021        }
11022        unsafe extern "system" fn Domain<
11023            Identity: ICoreWebView2Cookie_Impl,
11024            const OFFSET: isize,
11025        >(
11026            this: *mut core::ffi::c_void,
11027            domain: *mut windows_core::PWSTR,
11028        ) -> windows_core::HRESULT {
11029            unsafe {
11030                let this: &Identity =
11031                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11032                ICoreWebView2Cookie_Impl::Domain(this, core::mem::transmute_copy(&domain)).into()
11033            }
11034        }
11035        unsafe extern "system" fn Path<Identity: ICoreWebView2Cookie_Impl, const OFFSET: isize>(
11036            this: *mut core::ffi::c_void,
11037            path: *mut windows_core::PWSTR,
11038        ) -> windows_core::HRESULT {
11039            unsafe {
11040                let this: &Identity =
11041                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11042                ICoreWebView2Cookie_Impl::Path(this, core::mem::transmute_copy(&path)).into()
11043            }
11044        }
11045        unsafe extern "system" fn Expires<
11046            Identity: ICoreWebView2Cookie_Impl,
11047            const OFFSET: isize,
11048        >(
11049            this: *mut core::ffi::c_void,
11050            expires: *mut f64,
11051        ) -> windows_core::HRESULT {
11052            unsafe {
11053                let this: &Identity =
11054                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11055                ICoreWebView2Cookie_Impl::Expires(this, core::mem::transmute_copy(&expires)).into()
11056            }
11057        }
11058        unsafe extern "system" fn SetExpires<
11059            Identity: ICoreWebView2Cookie_Impl,
11060            const OFFSET: isize,
11061        >(
11062            this: *mut core::ffi::c_void,
11063            expires: f64,
11064        ) -> windows_core::HRESULT {
11065            unsafe {
11066                let this: &Identity =
11067                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11068                ICoreWebView2Cookie_Impl::SetExpires(this, core::mem::transmute_copy(&expires))
11069                    .into()
11070            }
11071        }
11072        unsafe extern "system" fn IsHttpOnly<
11073            Identity: ICoreWebView2Cookie_Impl,
11074            const OFFSET: isize,
11075        >(
11076            this: *mut core::ffi::c_void,
11077            ishttponly: *mut windows_core::BOOL,
11078        ) -> windows_core::HRESULT {
11079            unsafe {
11080                let this: &Identity =
11081                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11082                ICoreWebView2Cookie_Impl::IsHttpOnly(this, core::mem::transmute_copy(&ishttponly))
11083                    .into()
11084            }
11085        }
11086        unsafe extern "system" fn SetIsHttpOnly<
11087            Identity: ICoreWebView2Cookie_Impl,
11088            const OFFSET: isize,
11089        >(
11090            this: *mut core::ffi::c_void,
11091            ishttponly: windows_core::BOOL,
11092        ) -> windows_core::HRESULT {
11093            unsafe {
11094                let this: &Identity =
11095                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11096                ICoreWebView2Cookie_Impl::SetIsHttpOnly(
11097                    this,
11098                    core::mem::transmute_copy(&ishttponly),
11099                )
11100                .into()
11101            }
11102        }
11103        unsafe extern "system" fn SameSite<
11104            Identity: ICoreWebView2Cookie_Impl,
11105            const OFFSET: isize,
11106        >(
11107            this: *mut core::ffi::c_void,
11108            samesite: *mut COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
11109        ) -> windows_core::HRESULT {
11110            unsafe {
11111                let this: &Identity =
11112                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11113                ICoreWebView2Cookie_Impl::SameSite(this, core::mem::transmute_copy(&samesite))
11114                    .into()
11115            }
11116        }
11117        unsafe extern "system" fn SetSameSite<
11118            Identity: ICoreWebView2Cookie_Impl,
11119            const OFFSET: isize,
11120        >(
11121            this: *mut core::ffi::c_void,
11122            samesite: COREWEBVIEW2_COOKIE_SAME_SITE_KIND,
11123        ) -> windows_core::HRESULT {
11124            unsafe {
11125                let this: &Identity =
11126                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11127                ICoreWebView2Cookie_Impl::SetSameSite(this, core::mem::transmute_copy(&samesite))
11128                    .into()
11129            }
11130        }
11131        unsafe extern "system" fn IsSecure<
11132            Identity: ICoreWebView2Cookie_Impl,
11133            const OFFSET: isize,
11134        >(
11135            this: *mut core::ffi::c_void,
11136            issecure: *mut windows_core::BOOL,
11137        ) -> windows_core::HRESULT {
11138            unsafe {
11139                let this: &Identity =
11140                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11141                ICoreWebView2Cookie_Impl::IsSecure(this, core::mem::transmute_copy(&issecure))
11142                    .into()
11143            }
11144        }
11145        unsafe extern "system" fn SetIsSecure<
11146            Identity: ICoreWebView2Cookie_Impl,
11147            const OFFSET: isize,
11148        >(
11149            this: *mut core::ffi::c_void,
11150            issecure: windows_core::BOOL,
11151        ) -> windows_core::HRESULT {
11152            unsafe {
11153                let this: &Identity =
11154                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11155                ICoreWebView2Cookie_Impl::SetIsSecure(this, core::mem::transmute_copy(&issecure))
11156                    .into()
11157            }
11158        }
11159        unsafe extern "system" fn IsSession<
11160            Identity: ICoreWebView2Cookie_Impl,
11161            const OFFSET: isize,
11162        >(
11163            this: *mut core::ffi::c_void,
11164            issession: *mut windows_core::BOOL,
11165        ) -> windows_core::HRESULT {
11166            unsafe {
11167                let this: &Identity =
11168                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11169                ICoreWebView2Cookie_Impl::IsSession(this, core::mem::transmute_copy(&issession))
11170                    .into()
11171            }
11172        }
11173        Self {
11174            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11175            Name: Name::<Identity, OFFSET>,
11176            Value: Value::<Identity, OFFSET>,
11177            SetValue: SetValue::<Identity, OFFSET>,
11178            Domain: Domain::<Identity, OFFSET>,
11179            Path: Path::<Identity, OFFSET>,
11180            Expires: Expires::<Identity, OFFSET>,
11181            SetExpires: SetExpires::<Identity, OFFSET>,
11182            IsHttpOnly: IsHttpOnly::<Identity, OFFSET>,
11183            SetIsHttpOnly: SetIsHttpOnly::<Identity, OFFSET>,
11184            SameSite: SameSite::<Identity, OFFSET>,
11185            SetSameSite: SetSameSite::<Identity, OFFSET>,
11186            IsSecure: IsSecure::<Identity, OFFSET>,
11187            SetIsSecure: SetIsSecure::<Identity, OFFSET>,
11188            IsSession: IsSession::<Identity, OFFSET>,
11189        }
11190    }
11191    pub fn matches(iid: &windows_core::GUID) -> bool {
11192        iid == &<ICoreWebView2Cookie as windows_core::Interface>::IID
11193    }
11194}
11195impl windows_core::RuntimeName for ICoreWebView2Cookie {}
11196windows_core::imp::define_interface!(
11197    ICoreWebView2CookieList,
11198    ICoreWebView2CookieList_Vtbl,
11199    0xf7f6f714_5d2a_43c6_9503_346ece02d186
11200);
11201windows_core::imp::interface_hierarchy!(ICoreWebView2CookieList, windows_core::IUnknown);
11202impl ICoreWebView2CookieList {
11203    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
11204        unsafe {
11205            (windows_core::Interface::vtable(self).Count)(
11206                windows_core::Interface::as_raw(self),
11207                value as _,
11208            )
11209            .ok()
11210        }
11211    }
11212    pub unsafe fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2Cookie> {
11213        unsafe {
11214            let mut result__ = core::mem::zeroed();
11215            (windows_core::Interface::vtable(self).GetValueAtIndex)(
11216                windows_core::Interface::as_raw(self),
11217                index,
11218                &mut result__,
11219            )
11220            .and_then(|| windows_core::Type::from_abi(result__))
11221        }
11222    }
11223}
11224#[repr(C)]
11225#[doc(hidden)]
11226pub struct ICoreWebView2CookieList_Vtbl {
11227    pub base__: windows_core::IUnknown_Vtbl,
11228    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
11229    pub GetValueAtIndex: unsafe extern "system" fn(
11230        *mut core::ffi::c_void,
11231        u32,
11232        *mut *mut core::ffi::c_void,
11233    ) -> windows_core::HRESULT,
11234}
11235pub trait ICoreWebView2CookieList_Impl: windows_core::IUnknownImpl {
11236    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
11237    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2Cookie>;
11238}
11239impl ICoreWebView2CookieList_Vtbl {
11240    pub const fn new<Identity: ICoreWebView2CookieList_Impl, const OFFSET: isize>() -> Self {
11241        unsafe extern "system" fn Count<
11242            Identity: ICoreWebView2CookieList_Impl,
11243            const OFFSET: isize,
11244        >(
11245            this: *mut core::ffi::c_void,
11246            value: *mut u32,
11247        ) -> windows_core::HRESULT {
11248            unsafe {
11249                let this: &Identity =
11250                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11251                ICoreWebView2CookieList_Impl::Count(this, core::mem::transmute_copy(&value)).into()
11252            }
11253        }
11254        unsafe extern "system" fn GetValueAtIndex<
11255            Identity: ICoreWebView2CookieList_Impl,
11256            const OFFSET: isize,
11257        >(
11258            this: *mut core::ffi::c_void,
11259            index: u32,
11260            value: *mut *mut core::ffi::c_void,
11261        ) -> windows_core::HRESULT {
11262            unsafe {
11263                let this: &Identity =
11264                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11265                match ICoreWebView2CookieList_Impl::GetValueAtIndex(
11266                    this,
11267                    core::mem::transmute_copy(&index),
11268                ) {
11269                    Ok(ok__) => {
11270                        value.write(core::mem::transmute(ok__));
11271                        windows_core::HRESULT(0)
11272                    }
11273                    Err(err) => err.into(),
11274                }
11275            }
11276        }
11277        Self {
11278            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11279            Count: Count::<Identity, OFFSET>,
11280            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
11281        }
11282    }
11283    pub fn matches(iid: &windows_core::GUID) -> bool {
11284        iid == &<ICoreWebView2CookieList as windows_core::Interface>::IID
11285    }
11286}
11287impl windows_core::RuntimeName for ICoreWebView2CookieList {}
11288windows_core::imp::define_interface!(
11289    ICoreWebView2CookieManager,
11290    ICoreWebView2CookieManager_Vtbl,
11291    0x177cd9e7_b6f5_451a_94a0_5d7a3a4c4141
11292);
11293windows_core::imp::interface_hierarchy!(ICoreWebView2CookieManager, windows_core::IUnknown);
11294impl ICoreWebView2CookieManager {
11295    pub unsafe fn CreateCookie<P0, P1, P2, P3>(
11296        &self,
11297        name: P0,
11298        value: P1,
11299        domain: P2,
11300        path: P3,
11301    ) -> windows_core::Result<ICoreWebView2Cookie>
11302    where
11303        P0: windows_core::Param<windows_core::PCWSTR>,
11304        P1: windows_core::Param<windows_core::PCWSTR>,
11305        P2: windows_core::Param<windows_core::PCWSTR>,
11306        P3: windows_core::Param<windows_core::PCWSTR>,
11307    {
11308        unsafe {
11309            let mut result__ = core::mem::zeroed();
11310            (windows_core::Interface::vtable(self).CreateCookie)(
11311                windows_core::Interface::as_raw(self),
11312                name.param().abi(),
11313                value.param().abi(),
11314                domain.param().abi(),
11315                path.param().abi(),
11316                &mut result__,
11317            )
11318            .and_then(|| windows_core::Type::from_abi(result__))
11319        }
11320    }
11321    pub unsafe fn CopyCookie<P0>(
11322        &self,
11323        cookieparam: P0,
11324    ) -> windows_core::Result<ICoreWebView2Cookie>
11325    where
11326        P0: windows_core::Param<ICoreWebView2Cookie>,
11327    {
11328        unsafe {
11329            let mut result__ = core::mem::zeroed();
11330            (windows_core::Interface::vtable(self).CopyCookie)(
11331                windows_core::Interface::as_raw(self),
11332                cookieparam.param().abi(),
11333                &mut result__,
11334            )
11335            .and_then(|| windows_core::Type::from_abi(result__))
11336        }
11337    }
11338    pub unsafe fn GetCookies<P0, P1>(&self, uri: P0, handler: P1) -> windows_core::Result<()>
11339    where
11340        P0: windows_core::Param<windows_core::PCWSTR>,
11341        P1: windows_core::Param<ICoreWebView2GetCookiesCompletedHandler>,
11342    {
11343        unsafe {
11344            (windows_core::Interface::vtable(self).GetCookies)(
11345                windows_core::Interface::as_raw(self),
11346                uri.param().abi(),
11347                handler.param().abi(),
11348            )
11349            .ok()
11350        }
11351    }
11352    pub unsafe fn AddOrUpdateCookie<P0>(&self, cookie: P0) -> windows_core::Result<()>
11353    where
11354        P0: windows_core::Param<ICoreWebView2Cookie>,
11355    {
11356        unsafe {
11357            (windows_core::Interface::vtable(self).AddOrUpdateCookie)(
11358                windows_core::Interface::as_raw(self),
11359                cookie.param().abi(),
11360            )
11361            .ok()
11362        }
11363    }
11364    pub unsafe fn DeleteCookie<P0>(&self, cookie: P0) -> windows_core::Result<()>
11365    where
11366        P0: windows_core::Param<ICoreWebView2Cookie>,
11367    {
11368        unsafe {
11369            (windows_core::Interface::vtable(self).DeleteCookie)(
11370                windows_core::Interface::as_raw(self),
11371                cookie.param().abi(),
11372            )
11373            .ok()
11374        }
11375    }
11376    pub unsafe fn DeleteCookies<P0, P1>(&self, name: P0, uri: P1) -> windows_core::Result<()>
11377    where
11378        P0: windows_core::Param<windows_core::PCWSTR>,
11379        P1: windows_core::Param<windows_core::PCWSTR>,
11380    {
11381        unsafe {
11382            (windows_core::Interface::vtable(self).DeleteCookies)(
11383                windows_core::Interface::as_raw(self),
11384                name.param().abi(),
11385                uri.param().abi(),
11386            )
11387            .ok()
11388        }
11389    }
11390    pub unsafe fn DeleteCookiesWithDomainAndPath<P0, P1, P2>(
11391        &self,
11392        name: P0,
11393        domain: P1,
11394        path: P2,
11395    ) -> windows_core::Result<()>
11396    where
11397        P0: windows_core::Param<windows_core::PCWSTR>,
11398        P1: windows_core::Param<windows_core::PCWSTR>,
11399        P2: windows_core::Param<windows_core::PCWSTR>,
11400    {
11401        unsafe {
11402            (windows_core::Interface::vtable(self).DeleteCookiesWithDomainAndPath)(
11403                windows_core::Interface::as_raw(self),
11404                name.param().abi(),
11405                domain.param().abi(),
11406                path.param().abi(),
11407            )
11408            .ok()
11409        }
11410    }
11411    pub unsafe fn DeleteAllCookies(&self) -> windows_core::Result<()> {
11412        unsafe {
11413            (windows_core::Interface::vtable(self).DeleteAllCookies)(
11414                windows_core::Interface::as_raw(self),
11415            )
11416            .ok()
11417        }
11418    }
11419}
11420#[repr(C)]
11421#[doc(hidden)]
11422pub struct ICoreWebView2CookieManager_Vtbl {
11423    pub base__: windows_core::IUnknown_Vtbl,
11424    pub CreateCookie: unsafe extern "system" fn(
11425        *mut core::ffi::c_void,
11426        windows_core::PCWSTR,
11427        windows_core::PCWSTR,
11428        windows_core::PCWSTR,
11429        windows_core::PCWSTR,
11430        *mut *mut core::ffi::c_void,
11431    ) -> windows_core::HRESULT,
11432    pub CopyCookie: unsafe extern "system" fn(
11433        *mut core::ffi::c_void,
11434        *mut core::ffi::c_void,
11435        *mut *mut core::ffi::c_void,
11436    ) -> windows_core::HRESULT,
11437    pub GetCookies: unsafe extern "system" fn(
11438        *mut core::ffi::c_void,
11439        windows_core::PCWSTR,
11440        *mut core::ffi::c_void,
11441    ) -> windows_core::HRESULT,
11442    pub AddOrUpdateCookie: unsafe extern "system" fn(
11443        *mut core::ffi::c_void,
11444        *mut core::ffi::c_void,
11445    ) -> windows_core::HRESULT,
11446    pub DeleteCookie: unsafe extern "system" fn(
11447        *mut core::ffi::c_void,
11448        *mut core::ffi::c_void,
11449    ) -> windows_core::HRESULT,
11450    pub DeleteCookies: unsafe extern "system" fn(
11451        *mut core::ffi::c_void,
11452        windows_core::PCWSTR,
11453        windows_core::PCWSTR,
11454    ) -> windows_core::HRESULT,
11455    pub DeleteCookiesWithDomainAndPath: unsafe extern "system" fn(
11456        *mut core::ffi::c_void,
11457        windows_core::PCWSTR,
11458        windows_core::PCWSTR,
11459        windows_core::PCWSTR,
11460    ) -> windows_core::HRESULT,
11461    pub DeleteAllCookies:
11462        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
11463}
11464pub trait ICoreWebView2CookieManager_Impl: windows_core::IUnknownImpl {
11465    fn CreateCookie(
11466        &self,
11467        name: &windows_core::PCWSTR,
11468        value: &windows_core::PCWSTR,
11469        domain: &windows_core::PCWSTR,
11470        path: &windows_core::PCWSTR,
11471    ) -> windows_core::Result<ICoreWebView2Cookie>;
11472    fn CopyCookie(
11473        &self,
11474        cookieparam: windows_core::Ref<'_, ICoreWebView2Cookie>,
11475    ) -> windows_core::Result<ICoreWebView2Cookie>;
11476    fn GetCookies(
11477        &self,
11478        uri: &windows_core::PCWSTR,
11479        handler: windows_core::Ref<'_, ICoreWebView2GetCookiesCompletedHandler>,
11480    ) -> windows_core::Result<()>;
11481    fn AddOrUpdateCookie(
11482        &self,
11483        cookie: windows_core::Ref<'_, ICoreWebView2Cookie>,
11484    ) -> windows_core::Result<()>;
11485    fn DeleteCookie(
11486        &self,
11487        cookie: windows_core::Ref<'_, ICoreWebView2Cookie>,
11488    ) -> windows_core::Result<()>;
11489    fn DeleteCookies(
11490        &self,
11491        name: &windows_core::PCWSTR,
11492        uri: &windows_core::PCWSTR,
11493    ) -> windows_core::Result<()>;
11494    fn DeleteCookiesWithDomainAndPath(
11495        &self,
11496        name: &windows_core::PCWSTR,
11497        domain: &windows_core::PCWSTR,
11498        path: &windows_core::PCWSTR,
11499    ) -> windows_core::Result<()>;
11500    fn DeleteAllCookies(&self) -> windows_core::Result<()>;
11501}
11502impl ICoreWebView2CookieManager_Vtbl {
11503    pub const fn new<Identity: ICoreWebView2CookieManager_Impl, const OFFSET: isize>() -> Self {
11504        unsafe extern "system" fn CreateCookie<
11505            Identity: ICoreWebView2CookieManager_Impl,
11506            const OFFSET: isize,
11507        >(
11508            this: *mut core::ffi::c_void,
11509            name: windows_core::PCWSTR,
11510            value: windows_core::PCWSTR,
11511            domain: windows_core::PCWSTR,
11512            path: windows_core::PCWSTR,
11513            cookie: *mut *mut core::ffi::c_void,
11514        ) -> windows_core::HRESULT {
11515            unsafe {
11516                let this: &Identity =
11517                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11518                match ICoreWebView2CookieManager_Impl::CreateCookie(
11519                    this,
11520                    core::mem::transmute(&name),
11521                    core::mem::transmute(&value),
11522                    core::mem::transmute(&domain),
11523                    core::mem::transmute(&path),
11524                ) {
11525                    Ok(ok__) => {
11526                        cookie.write(core::mem::transmute(ok__));
11527                        windows_core::HRESULT(0)
11528                    }
11529                    Err(err) => err.into(),
11530                }
11531            }
11532        }
11533        unsafe extern "system" fn CopyCookie<
11534            Identity: ICoreWebView2CookieManager_Impl,
11535            const OFFSET: isize,
11536        >(
11537            this: *mut core::ffi::c_void,
11538            cookieparam: *mut core::ffi::c_void,
11539            cookie: *mut *mut core::ffi::c_void,
11540        ) -> windows_core::HRESULT {
11541            unsafe {
11542                let this: &Identity =
11543                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11544                match ICoreWebView2CookieManager_Impl::CopyCookie(
11545                    this,
11546                    core::mem::transmute_copy(&cookieparam),
11547                ) {
11548                    Ok(ok__) => {
11549                        cookie.write(core::mem::transmute(ok__));
11550                        windows_core::HRESULT(0)
11551                    }
11552                    Err(err) => err.into(),
11553                }
11554            }
11555        }
11556        unsafe extern "system" fn GetCookies<
11557            Identity: ICoreWebView2CookieManager_Impl,
11558            const OFFSET: isize,
11559        >(
11560            this: *mut core::ffi::c_void,
11561            uri: windows_core::PCWSTR,
11562            handler: *mut core::ffi::c_void,
11563        ) -> windows_core::HRESULT {
11564            unsafe {
11565                let this: &Identity =
11566                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11567                ICoreWebView2CookieManager_Impl::GetCookies(
11568                    this,
11569                    core::mem::transmute(&uri),
11570                    core::mem::transmute_copy(&handler),
11571                )
11572                .into()
11573            }
11574        }
11575        unsafe extern "system" fn AddOrUpdateCookie<
11576            Identity: ICoreWebView2CookieManager_Impl,
11577            const OFFSET: isize,
11578        >(
11579            this: *mut core::ffi::c_void,
11580            cookie: *mut core::ffi::c_void,
11581        ) -> windows_core::HRESULT {
11582            unsafe {
11583                let this: &Identity =
11584                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11585                ICoreWebView2CookieManager_Impl::AddOrUpdateCookie(
11586                    this,
11587                    core::mem::transmute_copy(&cookie),
11588                )
11589                .into()
11590            }
11591        }
11592        unsafe extern "system" fn DeleteCookie<
11593            Identity: ICoreWebView2CookieManager_Impl,
11594            const OFFSET: isize,
11595        >(
11596            this: *mut core::ffi::c_void,
11597            cookie: *mut core::ffi::c_void,
11598        ) -> windows_core::HRESULT {
11599            unsafe {
11600                let this: &Identity =
11601                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11602                ICoreWebView2CookieManager_Impl::DeleteCookie(
11603                    this,
11604                    core::mem::transmute_copy(&cookie),
11605                )
11606                .into()
11607            }
11608        }
11609        unsafe extern "system" fn DeleteCookies<
11610            Identity: ICoreWebView2CookieManager_Impl,
11611            const OFFSET: isize,
11612        >(
11613            this: *mut core::ffi::c_void,
11614            name: windows_core::PCWSTR,
11615            uri: windows_core::PCWSTR,
11616        ) -> windows_core::HRESULT {
11617            unsafe {
11618                let this: &Identity =
11619                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11620                ICoreWebView2CookieManager_Impl::DeleteCookies(
11621                    this,
11622                    core::mem::transmute(&name),
11623                    core::mem::transmute(&uri),
11624                )
11625                .into()
11626            }
11627        }
11628        unsafe extern "system" fn DeleteCookiesWithDomainAndPath<
11629            Identity: ICoreWebView2CookieManager_Impl,
11630            const OFFSET: isize,
11631        >(
11632            this: *mut core::ffi::c_void,
11633            name: windows_core::PCWSTR,
11634            domain: windows_core::PCWSTR,
11635            path: windows_core::PCWSTR,
11636        ) -> windows_core::HRESULT {
11637            unsafe {
11638                let this: &Identity =
11639                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11640                ICoreWebView2CookieManager_Impl::DeleteCookiesWithDomainAndPath(
11641                    this,
11642                    core::mem::transmute(&name),
11643                    core::mem::transmute(&domain),
11644                    core::mem::transmute(&path),
11645                )
11646                .into()
11647            }
11648        }
11649        unsafe extern "system" fn DeleteAllCookies<
11650            Identity: ICoreWebView2CookieManager_Impl,
11651            const OFFSET: isize,
11652        >(
11653            this: *mut core::ffi::c_void,
11654        ) -> windows_core::HRESULT {
11655            unsafe {
11656                let this: &Identity =
11657                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11658                ICoreWebView2CookieManager_Impl::DeleteAllCookies(this).into()
11659            }
11660        }
11661        Self {
11662            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11663            CreateCookie: CreateCookie::<Identity, OFFSET>,
11664            CopyCookie: CopyCookie::<Identity, OFFSET>,
11665            GetCookies: GetCookies::<Identity, OFFSET>,
11666            AddOrUpdateCookie: AddOrUpdateCookie::<Identity, OFFSET>,
11667            DeleteCookie: DeleteCookie::<Identity, OFFSET>,
11668            DeleteCookies: DeleteCookies::<Identity, OFFSET>,
11669            DeleteCookiesWithDomainAndPath: DeleteCookiesWithDomainAndPath::<Identity, OFFSET>,
11670            DeleteAllCookies: DeleteAllCookies::<Identity, OFFSET>,
11671        }
11672    }
11673    pub fn matches(iid: &windows_core::GUID) -> bool {
11674        iid == &<ICoreWebView2CookieManager as windows_core::Interface>::IID
11675    }
11676}
11677impl windows_core::RuntimeName for ICoreWebView2CookieManager {}
11678windows_core::imp::define_interface!(
11679    ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler,
11680    ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Vtbl,
11681    0x02fab84b_1428_4fb7_ad45_1b2e64736184
11682);
11683windows_core::imp::interface_hierarchy!(
11684    ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler,
11685    windows_core::IUnknown
11686);
11687impl ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler {
11688    pub unsafe fn Invoke<P1>(
11689        &self,
11690        errorcode: windows_core::HRESULT,
11691        result: P1,
11692    ) -> windows_core::Result<()>
11693    where
11694        P1: windows_core::Param<ICoreWebView2CompositionController>,
11695    {
11696        unsafe {
11697            (windows_core::Interface::vtable(self).Invoke)(
11698                windows_core::Interface::as_raw(self),
11699                errorcode,
11700                result.param().abi(),
11701            )
11702            .ok()
11703        }
11704    }
11705}
11706#[repr(C)]
11707#[doc(hidden)]
11708pub struct ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Vtbl {
11709    pub base__: windows_core::IUnknown_Vtbl,
11710    pub Invoke: unsafe extern "system" fn(
11711        *mut core::ffi::c_void,
11712        windows_core::HRESULT,
11713        *mut core::ffi::c_void,
11714    ) -> windows_core::HRESULT,
11715}
11716pub trait ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Impl:
11717    windows_core::IUnknownImpl
11718{
11719    fn Invoke(
11720        &self,
11721        errorcode: windows_core::HRESULT,
11722        result: windows_core::Ref<'_, ICoreWebView2CompositionController>,
11723    ) -> windows_core::Result<()>;
11724}
11725impl ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Vtbl {
11726    pub const fn new<
11727        Identity: ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Impl,
11728        const OFFSET: isize,
11729    >() -> Self {
11730        unsafe extern "system" fn Invoke<
11731            Identity: ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Impl,
11732            const OFFSET: isize,
11733        >(
11734            this: *mut core::ffi::c_void,
11735            errorcode: windows_core::HRESULT,
11736            result: *mut core::ffi::c_void,
11737        ) -> windows_core::HRESULT {
11738            unsafe {
11739                let this: &Identity =
11740                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11741                ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Impl::Invoke(
11742                    this,
11743                    core::mem::transmute_copy(&errorcode),
11744                    core::mem::transmute_copy(&result),
11745                )
11746                .into()
11747            }
11748        }
11749        Self {
11750            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11751            Invoke: Invoke::<Identity, OFFSET>,
11752        }
11753    }
11754    pub fn matches(iid: &windows_core::GUID) -> bool {
11755        iid == & < ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler as windows_core::Interface >::IID
11756    }
11757}
11758impl windows_core::RuntimeName
11759    for ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler
11760{
11761}
11762windows_core::imp::define_interface!(
11763    ICoreWebView2CreateCoreWebView2ControllerCompletedHandler,
11764    ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Vtbl,
11765    0x6c4819f3_c9b7_4260_8127_c9f5bde7f68c
11766);
11767windows_core::imp::interface_hierarchy!(
11768    ICoreWebView2CreateCoreWebView2ControllerCompletedHandler,
11769    windows_core::IUnknown
11770);
11771impl ICoreWebView2CreateCoreWebView2ControllerCompletedHandler {
11772    pub unsafe fn Invoke<P1>(
11773        &self,
11774        errorcode: windows_core::HRESULT,
11775        result: P1,
11776    ) -> windows_core::Result<()>
11777    where
11778        P1: windows_core::Param<ICoreWebView2Controller>,
11779    {
11780        unsafe {
11781            (windows_core::Interface::vtable(self).Invoke)(
11782                windows_core::Interface::as_raw(self),
11783                errorcode,
11784                result.param().abi(),
11785            )
11786            .ok()
11787        }
11788    }
11789}
11790#[repr(C)]
11791#[doc(hidden)]
11792pub struct ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Vtbl {
11793    pub base__: windows_core::IUnknown_Vtbl,
11794    pub Invoke: unsafe extern "system" fn(
11795        *mut core::ffi::c_void,
11796        windows_core::HRESULT,
11797        *mut core::ffi::c_void,
11798    ) -> windows_core::HRESULT,
11799}
11800pub trait ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Impl:
11801    windows_core::IUnknownImpl
11802{
11803    fn Invoke(
11804        &self,
11805        errorcode: windows_core::HRESULT,
11806        result: windows_core::Ref<'_, ICoreWebView2Controller>,
11807    ) -> windows_core::Result<()>;
11808}
11809impl ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Vtbl {
11810    pub const fn new<
11811        Identity: ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Impl,
11812        const OFFSET: isize,
11813    >() -> Self {
11814        unsafe extern "system" fn Invoke<
11815            Identity: ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Impl,
11816            const OFFSET: isize,
11817        >(
11818            this: *mut core::ffi::c_void,
11819            errorcode: windows_core::HRESULT,
11820            result: *mut core::ffi::c_void,
11821        ) -> windows_core::HRESULT {
11822            unsafe {
11823                let this: &Identity =
11824                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11825                ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Impl::Invoke(
11826                    this,
11827                    core::mem::transmute_copy(&errorcode),
11828                    core::mem::transmute_copy(&result),
11829                )
11830                .into()
11831            }
11832        }
11833        Self {
11834            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11835            Invoke: Invoke::<Identity, OFFSET>,
11836        }
11837    }
11838    pub fn matches(iid: &windows_core::GUID) -> bool {
11839        iid == & < ICoreWebView2CreateCoreWebView2ControllerCompletedHandler as windows_core::Interface >::IID
11840    }
11841}
11842impl windows_core::RuntimeName for ICoreWebView2CreateCoreWebView2ControllerCompletedHandler {}
11843windows_core::imp::define_interface!(
11844    ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler,
11845    ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Vtbl,
11846    0x4e8a3389_c9d8_4bd2_b6b5_124fee6cc14d
11847);
11848windows_core::imp::interface_hierarchy!(
11849    ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler,
11850    windows_core::IUnknown
11851);
11852impl ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler {
11853    pub unsafe fn Invoke<P1>(
11854        &self,
11855        errorcode: windows_core::HRESULT,
11856        result: P1,
11857    ) -> windows_core::Result<()>
11858    where
11859        P1: windows_core::Param<ICoreWebView2Environment>,
11860    {
11861        unsafe {
11862            (windows_core::Interface::vtable(self).Invoke)(
11863                windows_core::Interface::as_raw(self),
11864                errorcode,
11865                result.param().abi(),
11866            )
11867            .ok()
11868        }
11869    }
11870}
11871#[repr(C)]
11872#[doc(hidden)]
11873pub struct ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Vtbl {
11874    pub base__: windows_core::IUnknown_Vtbl,
11875    pub Invoke: unsafe extern "system" fn(
11876        *mut core::ffi::c_void,
11877        windows_core::HRESULT,
11878        *mut core::ffi::c_void,
11879    ) -> windows_core::HRESULT,
11880}
11881pub trait ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Impl:
11882    windows_core::IUnknownImpl
11883{
11884    fn Invoke(
11885        &self,
11886        errorcode: windows_core::HRESULT,
11887        result: windows_core::Ref<'_, ICoreWebView2Environment>,
11888    ) -> windows_core::Result<()>;
11889}
11890impl ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Vtbl {
11891    pub const fn new<
11892        Identity: ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Impl,
11893        const OFFSET: isize,
11894    >() -> Self {
11895        unsafe extern "system" fn Invoke<
11896            Identity: ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Impl,
11897            const OFFSET: isize,
11898        >(
11899            this: *mut core::ffi::c_void,
11900            errorcode: windows_core::HRESULT,
11901            result: *mut core::ffi::c_void,
11902        ) -> windows_core::HRESULT {
11903            unsafe {
11904                let this: &Identity =
11905                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11906                ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Impl::Invoke(
11907                    this,
11908                    core::mem::transmute_copy(&errorcode),
11909                    core::mem::transmute_copy(&result),
11910                )
11911                .into()
11912            }
11913        }
11914        Self {
11915            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11916            Invoke: Invoke::<Identity, OFFSET>,
11917        }
11918    }
11919    pub fn matches(iid: &windows_core::GUID) -> bool {
11920        iid == & < ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler as windows_core::Interface >::IID
11921    }
11922}
11923impl windows_core::RuntimeName for ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler {}
11924windows_core::imp::define_interface!(
11925    ICoreWebView2CursorChangedEventHandler,
11926    ICoreWebView2CursorChangedEventHandler_Vtbl,
11927    0x9da43ccc_26e1_4dad_b56c_d8961c94c571
11928);
11929windows_core::imp::interface_hierarchy!(
11930    ICoreWebView2CursorChangedEventHandler,
11931    windows_core::IUnknown
11932);
11933impl ICoreWebView2CursorChangedEventHandler {
11934    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
11935    where
11936        P0: windows_core::Param<ICoreWebView2CompositionController>,
11937        P1: windows_core::Param<windows_core::IUnknown>,
11938    {
11939        unsafe {
11940            (windows_core::Interface::vtable(self).Invoke)(
11941                windows_core::Interface::as_raw(self),
11942                sender.param().abi(),
11943                args.param().abi(),
11944            )
11945            .ok()
11946        }
11947    }
11948}
11949#[repr(C)]
11950#[doc(hidden)]
11951pub struct ICoreWebView2CursorChangedEventHandler_Vtbl {
11952    pub base__: windows_core::IUnknown_Vtbl,
11953    pub Invoke: unsafe extern "system" fn(
11954        *mut core::ffi::c_void,
11955        *mut core::ffi::c_void,
11956        *mut core::ffi::c_void,
11957    ) -> windows_core::HRESULT,
11958}
11959pub trait ICoreWebView2CursorChangedEventHandler_Impl: windows_core::IUnknownImpl {
11960    fn Invoke(
11961        &self,
11962        sender: windows_core::Ref<'_, ICoreWebView2CompositionController>,
11963        args: windows_core::Ref<'_, windows_core::IUnknown>,
11964    ) -> windows_core::Result<()>;
11965}
11966impl ICoreWebView2CursorChangedEventHandler_Vtbl {
11967    pub const fn new<Identity: ICoreWebView2CursorChangedEventHandler_Impl, const OFFSET: isize>(
11968    ) -> Self {
11969        unsafe extern "system" fn Invoke<
11970            Identity: ICoreWebView2CursorChangedEventHandler_Impl,
11971            const OFFSET: isize,
11972        >(
11973            this: *mut core::ffi::c_void,
11974            sender: *mut core::ffi::c_void,
11975            args: *mut core::ffi::c_void,
11976        ) -> windows_core::HRESULT {
11977            unsafe {
11978                let this: &Identity =
11979                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11980                ICoreWebView2CursorChangedEventHandler_Impl::Invoke(
11981                    this,
11982                    core::mem::transmute_copy(&sender),
11983                    core::mem::transmute_copy(&args),
11984                )
11985                .into()
11986            }
11987        }
11988        Self {
11989            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11990            Invoke: Invoke::<Identity, OFFSET>,
11991        }
11992    }
11993    pub fn matches(iid: &windows_core::GUID) -> bool {
11994        iid == &<ICoreWebView2CursorChangedEventHandler as windows_core::Interface>::IID
11995    }
11996}
11997impl windows_core::RuntimeName for ICoreWebView2CursorChangedEventHandler {}
11998windows_core::imp::define_interface!(
11999    ICoreWebView2CustomItemSelectedEventHandler,
12000    ICoreWebView2CustomItemSelectedEventHandler_Vtbl,
12001    0x49e1d0bc_fe9e_4481_b7c2_32324aa21998
12002);
12003windows_core::imp::interface_hierarchy!(
12004    ICoreWebView2CustomItemSelectedEventHandler,
12005    windows_core::IUnknown
12006);
12007impl ICoreWebView2CustomItemSelectedEventHandler {
12008    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
12009    where
12010        P0: windows_core::Param<ICoreWebView2ContextMenuItem>,
12011        P1: windows_core::Param<windows_core::IUnknown>,
12012    {
12013        unsafe {
12014            (windows_core::Interface::vtable(self).Invoke)(
12015                windows_core::Interface::as_raw(self),
12016                sender.param().abi(),
12017                args.param().abi(),
12018            )
12019            .ok()
12020        }
12021    }
12022}
12023#[repr(C)]
12024#[doc(hidden)]
12025pub struct ICoreWebView2CustomItemSelectedEventHandler_Vtbl {
12026    pub base__: windows_core::IUnknown_Vtbl,
12027    pub Invoke: unsafe extern "system" fn(
12028        *mut core::ffi::c_void,
12029        *mut core::ffi::c_void,
12030        *mut core::ffi::c_void,
12031    ) -> windows_core::HRESULT,
12032}
12033pub trait ICoreWebView2CustomItemSelectedEventHandler_Impl: windows_core::IUnknownImpl {
12034    fn Invoke(
12035        &self,
12036        sender: windows_core::Ref<'_, ICoreWebView2ContextMenuItem>,
12037        args: windows_core::Ref<'_, windows_core::IUnknown>,
12038    ) -> windows_core::Result<()>;
12039}
12040impl ICoreWebView2CustomItemSelectedEventHandler_Vtbl {
12041    pub const fn new<
12042        Identity: ICoreWebView2CustomItemSelectedEventHandler_Impl,
12043        const OFFSET: isize,
12044    >() -> Self {
12045        unsafe extern "system" fn Invoke<
12046            Identity: ICoreWebView2CustomItemSelectedEventHandler_Impl,
12047            const OFFSET: isize,
12048        >(
12049            this: *mut core::ffi::c_void,
12050            sender: *mut core::ffi::c_void,
12051            args: *mut core::ffi::c_void,
12052        ) -> windows_core::HRESULT {
12053            unsafe {
12054                let this: &Identity =
12055                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12056                ICoreWebView2CustomItemSelectedEventHandler_Impl::Invoke(
12057                    this,
12058                    core::mem::transmute_copy(&sender),
12059                    core::mem::transmute_copy(&args),
12060                )
12061                .into()
12062            }
12063        }
12064        Self {
12065            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12066            Invoke: Invoke::<Identity, OFFSET>,
12067        }
12068    }
12069    pub fn matches(iid: &windows_core::GUID) -> bool {
12070        iid == &<ICoreWebView2CustomItemSelectedEventHandler as windows_core::Interface>::IID
12071    }
12072}
12073impl windows_core::RuntimeName for ICoreWebView2CustomItemSelectedEventHandler {}
12074windows_core::imp::define_interface!(
12075    ICoreWebView2CustomSchemeRegistration,
12076    ICoreWebView2CustomSchemeRegistration_Vtbl,
12077    0xd60ac92c_37a6_4b26_a39e_95cfe59047bb
12078);
12079windows_core::imp::interface_hierarchy!(
12080    ICoreWebView2CustomSchemeRegistration,
12081    windows_core::IUnknown
12082);
12083impl ICoreWebView2CustomSchemeRegistration {
12084    pub unsafe fn SchemeName(
12085        &self,
12086        schemename: *mut windows_core::PWSTR,
12087    ) -> windows_core::Result<()> {
12088        unsafe {
12089            (windows_core::Interface::vtable(self).SchemeName)(
12090                windows_core::Interface::as_raw(self),
12091                schemename as _,
12092            )
12093            .ok()
12094        }
12095    }
12096    pub unsafe fn TreatAsSecure(
12097        &self,
12098        treatassecure: *mut windows_core::BOOL,
12099    ) -> windows_core::Result<()> {
12100        unsafe {
12101            (windows_core::Interface::vtable(self).TreatAsSecure)(
12102                windows_core::Interface::as_raw(self),
12103                treatassecure as _,
12104            )
12105            .ok()
12106        }
12107    }
12108    pub unsafe fn SetTreatAsSecure(&self, value: bool) -> windows_core::Result<()> {
12109        unsafe {
12110            (windows_core::Interface::vtable(self).SetTreatAsSecure)(
12111                windows_core::Interface::as_raw(self),
12112                value.into(),
12113            )
12114            .ok()
12115        }
12116    }
12117    pub unsafe fn GetAllowedOrigins(
12118        &self,
12119        allowedoriginscount: *mut u32,
12120        allowedorigins: *mut *mut windows_core::PWSTR,
12121    ) -> windows_core::Result<()> {
12122        unsafe {
12123            (windows_core::Interface::vtable(self).GetAllowedOrigins)(
12124                windows_core::Interface::as_raw(self),
12125                allowedoriginscount as _,
12126                allowedorigins as _,
12127            )
12128            .ok()
12129        }
12130    }
12131    pub unsafe fn SetAllowedOrigins(
12132        &self,
12133        allowedoriginscount: u32,
12134        allowedorigins: *const windows_core::PCWSTR,
12135    ) -> windows_core::Result<()> {
12136        unsafe {
12137            (windows_core::Interface::vtable(self).SetAllowedOrigins)(
12138                windows_core::Interface::as_raw(self),
12139                allowedoriginscount,
12140                allowedorigins,
12141            )
12142            .ok()
12143        }
12144    }
12145    pub unsafe fn HasAuthorityComponent(
12146        &self,
12147        hasauthoritycomponent: *mut windows_core::BOOL,
12148    ) -> windows_core::Result<()> {
12149        unsafe {
12150            (windows_core::Interface::vtable(self).HasAuthorityComponent)(
12151                windows_core::Interface::as_raw(self),
12152                hasauthoritycomponent as _,
12153            )
12154            .ok()
12155        }
12156    }
12157    pub unsafe fn SetHasAuthorityComponent(
12158        &self,
12159        hasauthoritycomponent: bool,
12160    ) -> windows_core::Result<()> {
12161        unsafe {
12162            (windows_core::Interface::vtable(self).SetHasAuthorityComponent)(
12163                windows_core::Interface::as_raw(self),
12164                hasauthoritycomponent.into(),
12165            )
12166            .ok()
12167        }
12168    }
12169}
12170#[repr(C)]
12171#[doc(hidden)]
12172pub struct ICoreWebView2CustomSchemeRegistration_Vtbl {
12173    pub base__: windows_core::IUnknown_Vtbl,
12174    pub SchemeName: unsafe extern "system" fn(
12175        *mut core::ffi::c_void,
12176        *mut windows_core::PWSTR,
12177    ) -> windows_core::HRESULT,
12178    pub TreatAsSecure: unsafe extern "system" fn(
12179        *mut core::ffi::c_void,
12180        *mut windows_core::BOOL,
12181    ) -> windows_core::HRESULT,
12182    pub SetTreatAsSecure: unsafe extern "system" fn(
12183        *mut core::ffi::c_void,
12184        windows_core::BOOL,
12185    ) -> windows_core::HRESULT,
12186    pub GetAllowedOrigins: unsafe extern "system" fn(
12187        *mut core::ffi::c_void,
12188        *mut u32,
12189        *mut *mut windows_core::PWSTR,
12190    ) -> windows_core::HRESULT,
12191    pub SetAllowedOrigins: unsafe extern "system" fn(
12192        *mut core::ffi::c_void,
12193        u32,
12194        *const windows_core::PCWSTR,
12195    ) -> windows_core::HRESULT,
12196    pub HasAuthorityComponent: unsafe extern "system" fn(
12197        *mut core::ffi::c_void,
12198        *mut windows_core::BOOL,
12199    ) -> windows_core::HRESULT,
12200    pub SetHasAuthorityComponent: unsafe extern "system" fn(
12201        *mut core::ffi::c_void,
12202        windows_core::BOOL,
12203    ) -> windows_core::HRESULT,
12204}
12205pub trait ICoreWebView2CustomSchemeRegistration_Impl: windows_core::IUnknownImpl {
12206    fn SchemeName(&self, schemename: *mut windows_core::PWSTR) -> windows_core::Result<()>;
12207    fn TreatAsSecure(&self, treatassecure: *mut windows_core::BOOL) -> windows_core::Result<()>;
12208    fn SetTreatAsSecure(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
12209    fn GetAllowedOrigins(
12210        &self,
12211        allowedoriginscount: *mut u32,
12212        allowedorigins: *mut *mut windows_core::PWSTR,
12213    ) -> windows_core::Result<()>;
12214    fn SetAllowedOrigins(
12215        &self,
12216        allowedoriginscount: u32,
12217        allowedorigins: *const windows_core::PCWSTR,
12218    ) -> windows_core::Result<()>;
12219    fn HasAuthorityComponent(
12220        &self,
12221        hasauthoritycomponent: *mut windows_core::BOOL,
12222    ) -> windows_core::Result<()>;
12223    fn SetHasAuthorityComponent(
12224        &self,
12225        hasauthoritycomponent: windows_core::BOOL,
12226    ) -> windows_core::Result<()>;
12227}
12228impl ICoreWebView2CustomSchemeRegistration_Vtbl {
12229    pub const fn new<Identity: ICoreWebView2CustomSchemeRegistration_Impl, const OFFSET: isize>(
12230    ) -> Self {
12231        unsafe extern "system" fn SchemeName<
12232            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12233            const OFFSET: isize,
12234        >(
12235            this: *mut core::ffi::c_void,
12236            schemename: *mut windows_core::PWSTR,
12237        ) -> windows_core::HRESULT {
12238            unsafe {
12239                let this: &Identity =
12240                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12241                ICoreWebView2CustomSchemeRegistration_Impl::SchemeName(
12242                    this,
12243                    core::mem::transmute_copy(&schemename),
12244                )
12245                .into()
12246            }
12247        }
12248        unsafe extern "system" fn TreatAsSecure<
12249            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12250            const OFFSET: isize,
12251        >(
12252            this: *mut core::ffi::c_void,
12253            treatassecure: *mut windows_core::BOOL,
12254        ) -> windows_core::HRESULT {
12255            unsafe {
12256                let this: &Identity =
12257                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12258                ICoreWebView2CustomSchemeRegistration_Impl::TreatAsSecure(
12259                    this,
12260                    core::mem::transmute_copy(&treatassecure),
12261                )
12262                .into()
12263            }
12264        }
12265        unsafe extern "system" fn SetTreatAsSecure<
12266            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12267            const OFFSET: isize,
12268        >(
12269            this: *mut core::ffi::c_void,
12270            value: windows_core::BOOL,
12271        ) -> windows_core::HRESULT {
12272            unsafe {
12273                let this: &Identity =
12274                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12275                ICoreWebView2CustomSchemeRegistration_Impl::SetTreatAsSecure(
12276                    this,
12277                    core::mem::transmute_copy(&value),
12278                )
12279                .into()
12280            }
12281        }
12282        unsafe extern "system" fn GetAllowedOrigins<
12283            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12284            const OFFSET: isize,
12285        >(
12286            this: *mut core::ffi::c_void,
12287            allowedoriginscount: *mut u32,
12288            allowedorigins: *mut *mut windows_core::PWSTR,
12289        ) -> windows_core::HRESULT {
12290            unsafe {
12291                let this: &Identity =
12292                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12293                ICoreWebView2CustomSchemeRegistration_Impl::GetAllowedOrigins(
12294                    this,
12295                    core::mem::transmute_copy(&allowedoriginscount),
12296                    core::mem::transmute_copy(&allowedorigins),
12297                )
12298                .into()
12299            }
12300        }
12301        unsafe extern "system" fn SetAllowedOrigins<
12302            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12303            const OFFSET: isize,
12304        >(
12305            this: *mut core::ffi::c_void,
12306            allowedoriginscount: u32,
12307            allowedorigins: *const windows_core::PCWSTR,
12308        ) -> windows_core::HRESULT {
12309            unsafe {
12310                let this: &Identity =
12311                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12312                ICoreWebView2CustomSchemeRegistration_Impl::SetAllowedOrigins(
12313                    this,
12314                    core::mem::transmute_copy(&allowedoriginscount),
12315                    core::mem::transmute_copy(&allowedorigins),
12316                )
12317                .into()
12318            }
12319        }
12320        unsafe extern "system" fn HasAuthorityComponent<
12321            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12322            const OFFSET: isize,
12323        >(
12324            this: *mut core::ffi::c_void,
12325            hasauthoritycomponent: *mut windows_core::BOOL,
12326        ) -> windows_core::HRESULT {
12327            unsafe {
12328                let this: &Identity =
12329                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12330                ICoreWebView2CustomSchemeRegistration_Impl::HasAuthorityComponent(
12331                    this,
12332                    core::mem::transmute_copy(&hasauthoritycomponent),
12333                )
12334                .into()
12335            }
12336        }
12337        unsafe extern "system" fn SetHasAuthorityComponent<
12338            Identity: ICoreWebView2CustomSchemeRegistration_Impl,
12339            const OFFSET: isize,
12340        >(
12341            this: *mut core::ffi::c_void,
12342            hasauthoritycomponent: windows_core::BOOL,
12343        ) -> windows_core::HRESULT {
12344            unsafe {
12345                let this: &Identity =
12346                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12347                ICoreWebView2CustomSchemeRegistration_Impl::SetHasAuthorityComponent(
12348                    this,
12349                    core::mem::transmute_copy(&hasauthoritycomponent),
12350                )
12351                .into()
12352            }
12353        }
12354        Self {
12355            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12356            SchemeName: SchemeName::<Identity, OFFSET>,
12357            TreatAsSecure: TreatAsSecure::<Identity, OFFSET>,
12358            SetTreatAsSecure: SetTreatAsSecure::<Identity, OFFSET>,
12359            GetAllowedOrigins: GetAllowedOrigins::<Identity, OFFSET>,
12360            SetAllowedOrigins: SetAllowedOrigins::<Identity, OFFSET>,
12361            HasAuthorityComponent: HasAuthorityComponent::<Identity, OFFSET>,
12362            SetHasAuthorityComponent: SetHasAuthorityComponent::<Identity, OFFSET>,
12363        }
12364    }
12365    pub fn matches(iid: &windows_core::GUID) -> bool {
12366        iid == &<ICoreWebView2CustomSchemeRegistration as windows_core::Interface>::IID
12367    }
12368}
12369impl windows_core::RuntimeName for ICoreWebView2CustomSchemeRegistration {}
12370windows_core::imp::define_interface!(
12371    ICoreWebView2DOMContentLoadedEventArgs,
12372    ICoreWebView2DOMContentLoadedEventArgs_Vtbl,
12373    0x16b1e21a_c503_44f2_84c9_70aba5031283
12374);
12375windows_core::imp::interface_hierarchy!(
12376    ICoreWebView2DOMContentLoadedEventArgs,
12377    windows_core::IUnknown
12378);
12379impl ICoreWebView2DOMContentLoadedEventArgs {
12380    pub unsafe fn NavigationId(&self, value: *mut u64) -> windows_core::Result<()> {
12381        unsafe {
12382            (windows_core::Interface::vtable(self).NavigationId)(
12383                windows_core::Interface::as_raw(self),
12384                value as _,
12385            )
12386            .ok()
12387        }
12388    }
12389}
12390#[repr(C)]
12391#[doc(hidden)]
12392pub struct ICoreWebView2DOMContentLoadedEventArgs_Vtbl {
12393    pub base__: windows_core::IUnknown_Vtbl,
12394    pub NavigationId:
12395        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
12396}
12397pub trait ICoreWebView2DOMContentLoadedEventArgs_Impl: windows_core::IUnknownImpl {
12398    fn NavigationId(&self, value: *mut u64) -> windows_core::Result<()>;
12399}
12400impl ICoreWebView2DOMContentLoadedEventArgs_Vtbl {
12401    pub const fn new<Identity: ICoreWebView2DOMContentLoadedEventArgs_Impl, const OFFSET: isize>(
12402    ) -> Self {
12403        unsafe extern "system" fn NavigationId<
12404            Identity: ICoreWebView2DOMContentLoadedEventArgs_Impl,
12405            const OFFSET: isize,
12406        >(
12407            this: *mut core::ffi::c_void,
12408            value: *mut u64,
12409        ) -> windows_core::HRESULT {
12410            unsafe {
12411                let this: &Identity =
12412                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12413                ICoreWebView2DOMContentLoadedEventArgs_Impl::NavigationId(
12414                    this,
12415                    core::mem::transmute_copy(&value),
12416                )
12417                .into()
12418            }
12419        }
12420        Self {
12421            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12422            NavigationId: NavigationId::<Identity, OFFSET>,
12423        }
12424    }
12425    pub fn matches(iid: &windows_core::GUID) -> bool {
12426        iid == &<ICoreWebView2DOMContentLoadedEventArgs as windows_core::Interface>::IID
12427    }
12428}
12429impl windows_core::RuntimeName for ICoreWebView2DOMContentLoadedEventArgs {}
12430windows_core::imp::define_interface!(
12431    ICoreWebView2DOMContentLoadedEventHandler,
12432    ICoreWebView2DOMContentLoadedEventHandler_Vtbl,
12433    0x4bac7e9c_199e_49ed_87ed_249303acf019
12434);
12435windows_core::imp::interface_hierarchy!(
12436    ICoreWebView2DOMContentLoadedEventHandler,
12437    windows_core::IUnknown
12438);
12439impl ICoreWebView2DOMContentLoadedEventHandler {
12440    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
12441    where
12442        P0: windows_core::Param<ICoreWebView2>,
12443        P1: windows_core::Param<ICoreWebView2DOMContentLoadedEventArgs>,
12444    {
12445        unsafe {
12446            (windows_core::Interface::vtable(self).Invoke)(
12447                windows_core::Interface::as_raw(self),
12448                sender.param().abi(),
12449                args.param().abi(),
12450            )
12451            .ok()
12452        }
12453    }
12454}
12455#[repr(C)]
12456#[doc(hidden)]
12457pub struct ICoreWebView2DOMContentLoadedEventHandler_Vtbl {
12458    pub base__: windows_core::IUnknown_Vtbl,
12459    pub Invoke: unsafe extern "system" fn(
12460        *mut core::ffi::c_void,
12461        *mut core::ffi::c_void,
12462        *mut core::ffi::c_void,
12463    ) -> windows_core::HRESULT,
12464}
12465pub trait ICoreWebView2DOMContentLoadedEventHandler_Impl: windows_core::IUnknownImpl {
12466    fn Invoke(
12467        &self,
12468        sender: windows_core::Ref<'_, ICoreWebView2>,
12469        args: windows_core::Ref<'_, ICoreWebView2DOMContentLoadedEventArgs>,
12470    ) -> windows_core::Result<()>;
12471}
12472impl ICoreWebView2DOMContentLoadedEventHandler_Vtbl {
12473    pub const fn new<
12474        Identity: ICoreWebView2DOMContentLoadedEventHandler_Impl,
12475        const OFFSET: isize,
12476    >() -> Self {
12477        unsafe extern "system" fn Invoke<
12478            Identity: ICoreWebView2DOMContentLoadedEventHandler_Impl,
12479            const OFFSET: isize,
12480        >(
12481            this: *mut core::ffi::c_void,
12482            sender: *mut core::ffi::c_void,
12483            args: *mut core::ffi::c_void,
12484        ) -> windows_core::HRESULT {
12485            unsafe {
12486                let this: &Identity =
12487                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12488                ICoreWebView2DOMContentLoadedEventHandler_Impl::Invoke(
12489                    this,
12490                    core::mem::transmute_copy(&sender),
12491                    core::mem::transmute_copy(&args),
12492                )
12493                .into()
12494            }
12495        }
12496        Self {
12497            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12498            Invoke: Invoke::<Identity, OFFSET>,
12499        }
12500    }
12501    pub fn matches(iid: &windows_core::GUID) -> bool {
12502        iid == &<ICoreWebView2DOMContentLoadedEventHandler as windows_core::Interface>::IID
12503    }
12504}
12505impl windows_core::RuntimeName for ICoreWebView2DOMContentLoadedEventHandler {}
12506windows_core::imp::define_interface!(
12507    ICoreWebView2Deferral,
12508    ICoreWebView2Deferral_Vtbl,
12509    0xc10e7f7b_b585_46f0_a623_8befbf3e4ee0
12510);
12511windows_core::imp::interface_hierarchy!(ICoreWebView2Deferral, windows_core::IUnknown);
12512impl ICoreWebView2Deferral {
12513    pub unsafe fn Complete(&self) -> windows_core::Result<()> {
12514        unsafe {
12515            (windows_core::Interface::vtable(self).Complete)(windows_core::Interface::as_raw(self))
12516                .ok()
12517        }
12518    }
12519}
12520#[repr(C)]
12521#[doc(hidden)]
12522pub struct ICoreWebView2Deferral_Vtbl {
12523    pub base__: windows_core::IUnknown_Vtbl,
12524    pub Complete: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
12525}
12526pub trait ICoreWebView2Deferral_Impl: windows_core::IUnknownImpl {
12527    fn Complete(&self) -> windows_core::Result<()>;
12528}
12529impl ICoreWebView2Deferral_Vtbl {
12530    pub const fn new<Identity: ICoreWebView2Deferral_Impl, const OFFSET: isize>() -> Self {
12531        unsafe extern "system" fn Complete<
12532            Identity: ICoreWebView2Deferral_Impl,
12533            const OFFSET: isize,
12534        >(
12535            this: *mut core::ffi::c_void,
12536        ) -> windows_core::HRESULT {
12537            unsafe {
12538                let this: &Identity =
12539                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12540                ICoreWebView2Deferral_Impl::Complete(this).into()
12541            }
12542        }
12543        Self {
12544            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12545            Complete: Complete::<Identity, OFFSET>,
12546        }
12547    }
12548    pub fn matches(iid: &windows_core::GUID) -> bool {
12549        iid == &<ICoreWebView2Deferral as windows_core::Interface>::IID
12550    }
12551}
12552impl windows_core::RuntimeName for ICoreWebView2Deferral {}
12553windows_core::imp::define_interface!(
12554    ICoreWebView2DevToolsProtocolEventReceivedEventArgs,
12555    ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Vtbl,
12556    0x653c2959_bb3a_4377_8632_b58ada4e66c4
12557);
12558windows_core::imp::interface_hierarchy!(
12559    ICoreWebView2DevToolsProtocolEventReceivedEventArgs,
12560    windows_core::IUnknown
12561);
12562impl ICoreWebView2DevToolsProtocolEventReceivedEventArgs {
12563    pub unsafe fn ParameterObjectAsJson(
12564        &self,
12565        value: *mut windows_core::PWSTR,
12566    ) -> windows_core::Result<()> {
12567        unsafe {
12568            (windows_core::Interface::vtable(self).ParameterObjectAsJson)(
12569                windows_core::Interface::as_raw(self),
12570                value as _,
12571            )
12572            .ok()
12573        }
12574    }
12575}
12576#[repr(C)]
12577#[doc(hidden)]
12578pub struct ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Vtbl {
12579    pub base__: windows_core::IUnknown_Vtbl,
12580    pub ParameterObjectAsJson: unsafe extern "system" fn(
12581        *mut core::ffi::c_void,
12582        *mut windows_core::PWSTR,
12583    ) -> windows_core::HRESULT,
12584}
12585pub trait ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Impl:
12586    windows_core::IUnknownImpl
12587{
12588    fn ParameterObjectAsJson(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
12589}
12590impl ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Vtbl {
12591    pub const fn new<
12592        Identity: ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Impl,
12593        const OFFSET: isize,
12594    >() -> Self {
12595        unsafe extern "system" fn ParameterObjectAsJson<
12596            Identity: ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Impl,
12597            const OFFSET: isize,
12598        >(
12599            this: *mut core::ffi::c_void,
12600            value: *mut windows_core::PWSTR,
12601        ) -> windows_core::HRESULT {
12602            unsafe {
12603                let this: &Identity =
12604                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12605                ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Impl::ParameterObjectAsJson(
12606                    this,
12607                    core::mem::transmute_copy(&value),
12608                )
12609                .into()
12610            }
12611        }
12612        Self {
12613            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12614            ParameterObjectAsJson: ParameterObjectAsJson::<Identity, OFFSET>,
12615        }
12616    }
12617    pub fn matches(iid: &windows_core::GUID) -> bool {
12618        iid == & < ICoreWebView2DevToolsProtocolEventReceivedEventArgs as windows_core::Interface >::IID
12619    }
12620}
12621impl windows_core::RuntimeName for ICoreWebView2DevToolsProtocolEventReceivedEventArgs {}
12622windows_core::imp::define_interface!(
12623    ICoreWebView2DevToolsProtocolEventReceivedEventArgs2,
12624    ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Vtbl,
12625    0x2dc4959d_1494_4393_95ba_bea4cb9ebd1b
12626);
12627impl core::ops::Deref for ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 {
12628    type Target = ICoreWebView2DevToolsProtocolEventReceivedEventArgs;
12629    fn deref(&self) -> &Self::Target {
12630        unsafe { core::mem::transmute(self) }
12631    }
12632}
12633windows_core::imp::interface_hierarchy!(
12634    ICoreWebView2DevToolsProtocolEventReceivedEventArgs2,
12635    windows_core::IUnknown,
12636    ICoreWebView2DevToolsProtocolEventReceivedEventArgs
12637);
12638impl ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 {
12639    pub unsafe fn SessionId(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
12640        unsafe {
12641            (windows_core::Interface::vtable(self).SessionId)(
12642                windows_core::Interface::as_raw(self),
12643                value as _,
12644            )
12645            .ok()
12646        }
12647    }
12648}
12649#[repr(C)]
12650#[doc(hidden)]
12651pub struct ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Vtbl {
12652    pub base__: ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Vtbl,
12653    pub SessionId: unsafe extern "system" fn(
12654        *mut core::ffi::c_void,
12655        *mut windows_core::PWSTR,
12656    ) -> windows_core::HRESULT,
12657}
12658pub trait ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Impl:
12659    ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Impl
12660{
12661    fn SessionId(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
12662}
12663impl ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Vtbl {
12664    pub const fn new<
12665        Identity: ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Impl,
12666        const OFFSET: isize,
12667    >() -> Self {
12668        unsafe extern "system" fn SessionId<
12669            Identity: ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Impl,
12670            const OFFSET: isize,
12671        >(
12672            this: *mut core::ffi::c_void,
12673            value: *mut windows_core::PWSTR,
12674        ) -> windows_core::HRESULT {
12675            unsafe {
12676                let this: &Identity =
12677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12678                ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Impl::SessionId(
12679                    this,
12680                    core::mem::transmute_copy(&value),
12681                )
12682                .into()
12683            }
12684        }
12685        Self {
12686            base__: ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Vtbl::new::<Identity, OFFSET>(
12687            ),
12688            SessionId: SessionId::<Identity, OFFSET>,
12689        }
12690    }
12691    pub fn matches(iid: &windows_core::GUID) -> bool {
12692        iid == & < ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 as windows_core::Interface >::IID || iid == & < ICoreWebView2DevToolsProtocolEventReceivedEventArgs as windows_core::Interface >::IID
12693    }
12694}
12695impl windows_core::RuntimeName for ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 {}
12696windows_core::imp::define_interface!(
12697    ICoreWebView2DevToolsProtocolEventReceivedEventHandler,
12698    ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Vtbl,
12699    0xe2fda4be_5456_406c_a261_3d452138362c
12700);
12701windows_core::imp::interface_hierarchy!(
12702    ICoreWebView2DevToolsProtocolEventReceivedEventHandler,
12703    windows_core::IUnknown
12704);
12705impl ICoreWebView2DevToolsProtocolEventReceivedEventHandler {
12706    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
12707    where
12708        P0: windows_core::Param<ICoreWebView2>,
12709        P1: windows_core::Param<ICoreWebView2DevToolsProtocolEventReceivedEventArgs>,
12710    {
12711        unsafe {
12712            (windows_core::Interface::vtable(self).Invoke)(
12713                windows_core::Interface::as_raw(self),
12714                sender.param().abi(),
12715                args.param().abi(),
12716            )
12717            .ok()
12718        }
12719    }
12720}
12721#[repr(C)]
12722#[doc(hidden)]
12723pub struct ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Vtbl {
12724    pub base__: windows_core::IUnknown_Vtbl,
12725    pub Invoke: unsafe extern "system" fn(
12726        *mut core::ffi::c_void,
12727        *mut core::ffi::c_void,
12728        *mut core::ffi::c_void,
12729    ) -> windows_core::HRESULT,
12730}
12731pub trait ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Impl:
12732    windows_core::IUnknownImpl
12733{
12734    fn Invoke(
12735        &self,
12736        sender: windows_core::Ref<'_, ICoreWebView2>,
12737        args: windows_core::Ref<'_, ICoreWebView2DevToolsProtocolEventReceivedEventArgs>,
12738    ) -> windows_core::Result<()>;
12739}
12740impl ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Vtbl {
12741    pub const fn new<
12742        Identity: ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Impl,
12743        const OFFSET: isize,
12744    >() -> Self {
12745        unsafe extern "system" fn Invoke<
12746            Identity: ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Impl,
12747            const OFFSET: isize,
12748        >(
12749            this: *mut core::ffi::c_void,
12750            sender: *mut core::ffi::c_void,
12751            args: *mut core::ffi::c_void,
12752        ) -> windows_core::HRESULT {
12753            unsafe {
12754                let this: &Identity =
12755                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12756                ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Impl::Invoke(
12757                    this,
12758                    core::mem::transmute_copy(&sender),
12759                    core::mem::transmute_copy(&args),
12760                )
12761                .into()
12762            }
12763        }
12764        Self {
12765            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12766            Invoke: Invoke::<Identity, OFFSET>,
12767        }
12768    }
12769    pub fn matches(iid: &windows_core::GUID) -> bool {
12770        iid == & < ICoreWebView2DevToolsProtocolEventReceivedEventHandler as windows_core::Interface >::IID
12771    }
12772}
12773impl windows_core::RuntimeName for ICoreWebView2DevToolsProtocolEventReceivedEventHandler {}
12774windows_core::imp::define_interface!(
12775    ICoreWebView2DevToolsProtocolEventReceiver,
12776    ICoreWebView2DevToolsProtocolEventReceiver_Vtbl,
12777    0xb32ca51a_8371_45e9_9317_af021d080367
12778);
12779windows_core::imp::interface_hierarchy!(
12780    ICoreWebView2DevToolsProtocolEventReceiver,
12781    windows_core::IUnknown
12782);
12783impl ICoreWebView2DevToolsProtocolEventReceiver {
12784    pub unsafe fn add_DevToolsProtocolEventReceived<P0>(
12785        &self,
12786        eventhandler: P0,
12787        token: *mut i64,
12788    ) -> windows_core::Result<()>
12789    where
12790        P0: windows_core::Param<ICoreWebView2DevToolsProtocolEventReceivedEventHandler>,
12791    {
12792        unsafe {
12793            (windows_core::Interface::vtable(self).add_DevToolsProtocolEventReceived)(
12794                windows_core::Interface::as_raw(self),
12795                eventhandler.param().abi(),
12796                token as _,
12797            )
12798            .ok()
12799        }
12800    }
12801    pub unsafe fn remove_DevToolsProtocolEventReceived(
12802        &self,
12803        token: i64,
12804    ) -> windows_core::Result<()> {
12805        unsafe {
12806            (windows_core::Interface::vtable(self).remove_DevToolsProtocolEventReceived)(
12807                windows_core::Interface::as_raw(self),
12808                token,
12809            )
12810            .ok()
12811        }
12812    }
12813}
12814#[repr(C)]
12815#[doc(hidden)]
12816pub struct ICoreWebView2DevToolsProtocolEventReceiver_Vtbl {
12817    pub base__: windows_core::IUnknown_Vtbl,
12818    pub add_DevToolsProtocolEventReceived: unsafe extern "system" fn(
12819        *mut core::ffi::c_void,
12820        *mut core::ffi::c_void,
12821        *mut i64,
12822    ) -> windows_core::HRESULT,
12823    pub remove_DevToolsProtocolEventReceived:
12824        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
12825}
12826pub trait ICoreWebView2DevToolsProtocolEventReceiver_Impl: windows_core::IUnknownImpl {
12827    fn add_DevToolsProtocolEventReceived(
12828        &self,
12829        eventhandler: windows_core::Ref<'_, ICoreWebView2DevToolsProtocolEventReceivedEventHandler>,
12830        token: *mut i64,
12831    ) -> windows_core::Result<()>;
12832    fn remove_DevToolsProtocolEventReceived(&self, token: i64) -> windows_core::Result<()>;
12833}
12834impl ICoreWebView2DevToolsProtocolEventReceiver_Vtbl {
12835    pub const fn new<
12836        Identity: ICoreWebView2DevToolsProtocolEventReceiver_Impl,
12837        const OFFSET: isize,
12838    >() -> Self {
12839        unsafe extern "system" fn add_DevToolsProtocolEventReceived<
12840            Identity: ICoreWebView2DevToolsProtocolEventReceiver_Impl,
12841            const OFFSET: isize,
12842        >(
12843            this: *mut core::ffi::c_void,
12844            eventhandler: *mut core::ffi::c_void,
12845            token: *mut i64,
12846        ) -> windows_core::HRESULT {
12847            unsafe {
12848                let this: &Identity =
12849                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12850                ICoreWebView2DevToolsProtocolEventReceiver_Impl::add_DevToolsProtocolEventReceived(
12851                    this,
12852                    core::mem::transmute_copy(&eventhandler),
12853                    core::mem::transmute_copy(&token),
12854                )
12855                .into()
12856            }
12857        }
12858        unsafe extern "system" fn remove_DevToolsProtocolEventReceived<
12859            Identity: ICoreWebView2DevToolsProtocolEventReceiver_Impl,
12860            const OFFSET: isize,
12861        >(
12862            this: *mut core::ffi::c_void,
12863            token: i64,
12864        ) -> windows_core::HRESULT {
12865            unsafe {
12866                let this: &Identity =
12867                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12868                ICoreWebView2DevToolsProtocolEventReceiver_Impl:: remove_DevToolsProtocolEventReceived ( this , core::mem::transmute_copy ( & token ) , ) . into ( )
12869            }
12870        }
12871        Self {
12872            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12873            add_DevToolsProtocolEventReceived: add_DevToolsProtocolEventReceived::<Identity, OFFSET>,
12874            remove_DevToolsProtocolEventReceived: remove_DevToolsProtocolEventReceived::<
12875                Identity,
12876                OFFSET,
12877            >,
12878        }
12879    }
12880    pub fn matches(iid: &windows_core::GUID) -> bool {
12881        iid == &<ICoreWebView2DevToolsProtocolEventReceiver as windows_core::Interface>::IID
12882    }
12883}
12884impl windows_core::RuntimeName for ICoreWebView2DevToolsProtocolEventReceiver {}
12885windows_core::imp::define_interface!(
12886    ICoreWebView2DocumentTitleChangedEventHandler,
12887    ICoreWebView2DocumentTitleChangedEventHandler_Vtbl,
12888    0xf5f2b923_953e_4042_9f95_f3a118e1afd4
12889);
12890windows_core::imp::interface_hierarchy!(
12891    ICoreWebView2DocumentTitleChangedEventHandler,
12892    windows_core::IUnknown
12893);
12894impl ICoreWebView2DocumentTitleChangedEventHandler {
12895    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
12896    where
12897        P0: windows_core::Param<ICoreWebView2>,
12898        P1: windows_core::Param<windows_core::IUnknown>,
12899    {
12900        unsafe {
12901            (windows_core::Interface::vtable(self).Invoke)(
12902                windows_core::Interface::as_raw(self),
12903                sender.param().abi(),
12904                args.param().abi(),
12905            )
12906            .ok()
12907        }
12908    }
12909}
12910#[repr(C)]
12911#[doc(hidden)]
12912pub struct ICoreWebView2DocumentTitleChangedEventHandler_Vtbl {
12913    pub base__: windows_core::IUnknown_Vtbl,
12914    pub Invoke: unsafe extern "system" fn(
12915        *mut core::ffi::c_void,
12916        *mut core::ffi::c_void,
12917        *mut core::ffi::c_void,
12918    ) -> windows_core::HRESULT,
12919}
12920pub trait ICoreWebView2DocumentTitleChangedEventHandler_Impl: windows_core::IUnknownImpl {
12921    fn Invoke(
12922        &self,
12923        sender: windows_core::Ref<'_, ICoreWebView2>,
12924        args: windows_core::Ref<'_, windows_core::IUnknown>,
12925    ) -> windows_core::Result<()>;
12926}
12927impl ICoreWebView2DocumentTitleChangedEventHandler_Vtbl {
12928    pub const fn new<
12929        Identity: ICoreWebView2DocumentTitleChangedEventHandler_Impl,
12930        const OFFSET: isize,
12931    >() -> Self {
12932        unsafe extern "system" fn Invoke<
12933            Identity: ICoreWebView2DocumentTitleChangedEventHandler_Impl,
12934            const OFFSET: isize,
12935        >(
12936            this: *mut core::ffi::c_void,
12937            sender: *mut core::ffi::c_void,
12938            args: *mut core::ffi::c_void,
12939        ) -> windows_core::HRESULT {
12940            unsafe {
12941                let this: &Identity =
12942                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12943                ICoreWebView2DocumentTitleChangedEventHandler_Impl::Invoke(
12944                    this,
12945                    core::mem::transmute_copy(&sender),
12946                    core::mem::transmute_copy(&args),
12947                )
12948                .into()
12949            }
12950        }
12951        Self {
12952            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12953            Invoke: Invoke::<Identity, OFFSET>,
12954        }
12955    }
12956    pub fn matches(iid: &windows_core::GUID) -> bool {
12957        iid == &<ICoreWebView2DocumentTitleChangedEventHandler as windows_core::Interface>::IID
12958    }
12959}
12960impl windows_core::RuntimeName for ICoreWebView2DocumentTitleChangedEventHandler {}
12961windows_core::imp::define_interface!(
12962    ICoreWebView2DownloadOperation,
12963    ICoreWebView2DownloadOperation_Vtbl,
12964    0x3d6b6cf2_afe1_44c7_a995_c65117714336
12965);
12966windows_core::imp::interface_hierarchy!(ICoreWebView2DownloadOperation, windows_core::IUnknown);
12967impl ICoreWebView2DownloadOperation {
12968    pub unsafe fn add_BytesReceivedChanged<P0>(
12969        &self,
12970        eventhandler: P0,
12971        token: *mut i64,
12972    ) -> windows_core::Result<()>
12973    where
12974        P0: windows_core::Param<ICoreWebView2BytesReceivedChangedEventHandler>,
12975    {
12976        unsafe {
12977            (windows_core::Interface::vtable(self).add_BytesReceivedChanged)(
12978                windows_core::Interface::as_raw(self),
12979                eventhandler.param().abi(),
12980                token as _,
12981            )
12982            .ok()
12983        }
12984    }
12985    pub unsafe fn remove_BytesReceivedChanged(&self, token: i64) -> windows_core::Result<()> {
12986        unsafe {
12987            (windows_core::Interface::vtable(self).remove_BytesReceivedChanged)(
12988                windows_core::Interface::as_raw(self),
12989                token,
12990            )
12991            .ok()
12992        }
12993    }
12994    pub unsafe fn add_EstimatedEndTimeChanged<P0>(
12995        &self,
12996        eventhandler: P0,
12997        token: *mut i64,
12998    ) -> windows_core::Result<()>
12999    where
13000        P0: windows_core::Param<ICoreWebView2EstimatedEndTimeChangedEventHandler>,
13001    {
13002        unsafe {
13003            (windows_core::Interface::vtable(self).add_EstimatedEndTimeChanged)(
13004                windows_core::Interface::as_raw(self),
13005                eventhandler.param().abi(),
13006                token as _,
13007            )
13008            .ok()
13009        }
13010    }
13011    pub unsafe fn remove_EstimatedEndTimeChanged(&self, token: i64) -> windows_core::Result<()> {
13012        unsafe {
13013            (windows_core::Interface::vtable(self).remove_EstimatedEndTimeChanged)(
13014                windows_core::Interface::as_raw(self),
13015                token,
13016            )
13017            .ok()
13018        }
13019    }
13020    pub unsafe fn add_StateChanged<P0>(
13021        &self,
13022        eventhandler: P0,
13023        token: *mut i64,
13024    ) -> windows_core::Result<()>
13025    where
13026        P0: windows_core::Param<ICoreWebView2StateChangedEventHandler>,
13027    {
13028        unsafe {
13029            (windows_core::Interface::vtable(self).add_StateChanged)(
13030                windows_core::Interface::as_raw(self),
13031                eventhandler.param().abi(),
13032                token as _,
13033            )
13034            .ok()
13035        }
13036    }
13037    pub unsafe fn remove_StateChanged(&self, token: i64) -> windows_core::Result<()> {
13038        unsafe {
13039            (windows_core::Interface::vtable(self).remove_StateChanged)(
13040                windows_core::Interface::as_raw(self),
13041                token,
13042            )
13043            .ok()
13044        }
13045    }
13046    pub unsafe fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
13047        unsafe {
13048            (windows_core::Interface::vtable(self).Uri)(
13049                windows_core::Interface::as_raw(self),
13050                uri as _,
13051            )
13052            .ok()
13053        }
13054    }
13055    pub unsafe fn ContentDisposition(
13056        &self,
13057        contentdisposition: *mut windows_core::PWSTR,
13058    ) -> windows_core::Result<()> {
13059        unsafe {
13060            (windows_core::Interface::vtable(self).ContentDisposition)(
13061                windows_core::Interface::as_raw(self),
13062                contentdisposition as _,
13063            )
13064            .ok()
13065        }
13066    }
13067    pub unsafe fn MimeType(&self, mimetype: *mut windows_core::PWSTR) -> windows_core::Result<()> {
13068        unsafe {
13069            (windows_core::Interface::vtable(self).MimeType)(
13070                windows_core::Interface::as_raw(self),
13071                mimetype as _,
13072            )
13073            .ok()
13074        }
13075    }
13076    pub unsafe fn TotalBytesToReceive(
13077        &self,
13078        totalbytestoreceive: *mut i64,
13079    ) -> windows_core::Result<()> {
13080        unsafe {
13081            (windows_core::Interface::vtable(self).TotalBytesToReceive)(
13082                windows_core::Interface::as_raw(self),
13083                totalbytestoreceive as _,
13084            )
13085            .ok()
13086        }
13087    }
13088    pub unsafe fn BytesReceived(&self, bytesreceived: *mut i64) -> windows_core::Result<()> {
13089        unsafe {
13090            (windows_core::Interface::vtable(self).BytesReceived)(
13091                windows_core::Interface::as_raw(self),
13092                bytesreceived as _,
13093            )
13094            .ok()
13095        }
13096    }
13097    pub unsafe fn EstimatedEndTime(
13098        &self,
13099        estimatedendtime: *mut windows_core::PWSTR,
13100    ) -> windows_core::Result<()> {
13101        unsafe {
13102            (windows_core::Interface::vtable(self).EstimatedEndTime)(
13103                windows_core::Interface::as_raw(self),
13104                estimatedendtime as _,
13105            )
13106            .ok()
13107        }
13108    }
13109    pub unsafe fn ResultFilePath(
13110        &self,
13111        resultfilepath: *mut windows_core::PWSTR,
13112    ) -> windows_core::Result<()> {
13113        unsafe {
13114            (windows_core::Interface::vtable(self).ResultFilePath)(
13115                windows_core::Interface::as_raw(self),
13116                resultfilepath as _,
13117            )
13118            .ok()
13119        }
13120    }
13121    pub unsafe fn State(
13122        &self,
13123        downloadstate: *mut COREWEBVIEW2_DOWNLOAD_STATE,
13124    ) -> windows_core::Result<()> {
13125        unsafe {
13126            (windows_core::Interface::vtable(self).State)(
13127                windows_core::Interface::as_raw(self),
13128                downloadstate as _,
13129            )
13130            .ok()
13131        }
13132    }
13133    pub unsafe fn InterruptReason(
13134        &self,
13135        interruptreason: *mut COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON,
13136    ) -> windows_core::Result<()> {
13137        unsafe {
13138            (windows_core::Interface::vtable(self).InterruptReason)(
13139                windows_core::Interface::as_raw(self),
13140                interruptreason as _,
13141            )
13142            .ok()
13143        }
13144    }
13145    pub unsafe fn Cancel(&self) -> windows_core::Result<()> {
13146        unsafe {
13147            (windows_core::Interface::vtable(self).Cancel)(windows_core::Interface::as_raw(self))
13148                .ok()
13149        }
13150    }
13151    pub unsafe fn Pause(&self) -> windows_core::Result<()> {
13152        unsafe {
13153            (windows_core::Interface::vtable(self).Pause)(windows_core::Interface::as_raw(self))
13154                .ok()
13155        }
13156    }
13157    pub unsafe fn Resume(&self) -> windows_core::Result<()> {
13158        unsafe {
13159            (windows_core::Interface::vtable(self).Resume)(windows_core::Interface::as_raw(self))
13160                .ok()
13161        }
13162    }
13163    pub unsafe fn CanResume(&self, canresume: *mut windows_core::BOOL) -> windows_core::Result<()> {
13164        unsafe {
13165            (windows_core::Interface::vtable(self).CanResume)(
13166                windows_core::Interface::as_raw(self),
13167                canresume as _,
13168            )
13169            .ok()
13170        }
13171    }
13172}
13173#[repr(C)]
13174#[doc(hidden)]
13175pub struct ICoreWebView2DownloadOperation_Vtbl {
13176    pub base__: windows_core::IUnknown_Vtbl,
13177    pub add_BytesReceivedChanged: unsafe extern "system" fn(
13178        *mut core::ffi::c_void,
13179        *mut core::ffi::c_void,
13180        *mut i64,
13181    ) -> windows_core::HRESULT,
13182    pub remove_BytesReceivedChanged:
13183        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
13184    pub add_EstimatedEndTimeChanged: unsafe extern "system" fn(
13185        *mut core::ffi::c_void,
13186        *mut core::ffi::c_void,
13187        *mut i64,
13188    ) -> windows_core::HRESULT,
13189    pub remove_EstimatedEndTimeChanged:
13190        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
13191    pub add_StateChanged: unsafe extern "system" fn(
13192        *mut core::ffi::c_void,
13193        *mut core::ffi::c_void,
13194        *mut i64,
13195    ) -> windows_core::HRESULT,
13196    pub remove_StateChanged:
13197        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
13198    pub Uri: unsafe extern "system" fn(
13199        *mut core::ffi::c_void,
13200        *mut windows_core::PWSTR,
13201    ) -> windows_core::HRESULT,
13202    pub ContentDisposition: unsafe extern "system" fn(
13203        *mut core::ffi::c_void,
13204        *mut windows_core::PWSTR,
13205    ) -> windows_core::HRESULT,
13206    pub MimeType: unsafe extern "system" fn(
13207        *mut core::ffi::c_void,
13208        *mut windows_core::PWSTR,
13209    ) -> windows_core::HRESULT,
13210    pub TotalBytesToReceive:
13211        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i64) -> windows_core::HRESULT,
13212    pub BytesReceived:
13213        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i64) -> windows_core::HRESULT,
13214    pub EstimatedEndTime: unsafe extern "system" fn(
13215        *mut core::ffi::c_void,
13216        *mut windows_core::PWSTR,
13217    ) -> windows_core::HRESULT,
13218    pub ResultFilePath: unsafe extern "system" fn(
13219        *mut core::ffi::c_void,
13220        *mut windows_core::PWSTR,
13221    ) -> windows_core::HRESULT,
13222    pub State: unsafe extern "system" fn(
13223        *mut core::ffi::c_void,
13224        *mut COREWEBVIEW2_DOWNLOAD_STATE,
13225    ) -> windows_core::HRESULT,
13226    pub InterruptReason: unsafe extern "system" fn(
13227        *mut core::ffi::c_void,
13228        *mut COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON,
13229    ) -> windows_core::HRESULT,
13230    pub Cancel: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
13231    pub Pause: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
13232    pub Resume: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
13233    pub CanResume: unsafe extern "system" fn(
13234        *mut core::ffi::c_void,
13235        *mut windows_core::BOOL,
13236    ) -> windows_core::HRESULT,
13237}
13238pub trait ICoreWebView2DownloadOperation_Impl: windows_core::IUnknownImpl {
13239    fn add_BytesReceivedChanged(
13240        &self,
13241        eventhandler: windows_core::Ref<'_, ICoreWebView2BytesReceivedChangedEventHandler>,
13242        token: *mut i64,
13243    ) -> windows_core::Result<()>;
13244    fn remove_BytesReceivedChanged(&self, token: i64) -> windows_core::Result<()>;
13245    fn add_EstimatedEndTimeChanged(
13246        &self,
13247        eventhandler: windows_core::Ref<'_, ICoreWebView2EstimatedEndTimeChangedEventHandler>,
13248        token: *mut i64,
13249    ) -> windows_core::Result<()>;
13250    fn remove_EstimatedEndTimeChanged(&self, token: i64) -> windows_core::Result<()>;
13251    fn add_StateChanged(
13252        &self,
13253        eventhandler: windows_core::Ref<'_, ICoreWebView2StateChangedEventHandler>,
13254        token: *mut i64,
13255    ) -> windows_core::Result<()>;
13256    fn remove_StateChanged(&self, token: i64) -> windows_core::Result<()>;
13257    fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
13258    fn ContentDisposition(
13259        &self,
13260        contentdisposition: *mut windows_core::PWSTR,
13261    ) -> windows_core::Result<()>;
13262    fn MimeType(&self, mimetype: *mut windows_core::PWSTR) -> windows_core::Result<()>;
13263    fn TotalBytesToReceive(&self, totalbytestoreceive: *mut i64) -> windows_core::Result<()>;
13264    fn BytesReceived(&self, bytesreceived: *mut i64) -> windows_core::Result<()>;
13265    fn EstimatedEndTime(
13266        &self,
13267        estimatedendtime: *mut windows_core::PWSTR,
13268    ) -> windows_core::Result<()>;
13269    fn ResultFilePath(&self, resultfilepath: *mut windows_core::PWSTR) -> windows_core::Result<()>;
13270    fn State(&self, downloadstate: *mut COREWEBVIEW2_DOWNLOAD_STATE) -> windows_core::Result<()>;
13271    fn InterruptReason(
13272        &self,
13273        interruptreason: *mut COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON,
13274    ) -> windows_core::Result<()>;
13275    fn Cancel(&self) -> windows_core::Result<()>;
13276    fn Pause(&self) -> windows_core::Result<()>;
13277    fn Resume(&self) -> windows_core::Result<()>;
13278    fn CanResume(&self, canresume: *mut windows_core::BOOL) -> windows_core::Result<()>;
13279}
13280impl ICoreWebView2DownloadOperation_Vtbl {
13281    pub const fn new<Identity: ICoreWebView2DownloadOperation_Impl, const OFFSET: isize>() -> Self {
13282        unsafe extern "system" fn add_BytesReceivedChanged<
13283            Identity: ICoreWebView2DownloadOperation_Impl,
13284            const OFFSET: isize,
13285        >(
13286            this: *mut core::ffi::c_void,
13287            eventhandler: *mut core::ffi::c_void,
13288            token: *mut i64,
13289        ) -> windows_core::HRESULT {
13290            unsafe {
13291                let this: &Identity =
13292                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13293                ICoreWebView2DownloadOperation_Impl::add_BytesReceivedChanged(
13294                    this,
13295                    core::mem::transmute_copy(&eventhandler),
13296                    core::mem::transmute_copy(&token),
13297                )
13298                .into()
13299            }
13300        }
13301        unsafe extern "system" fn remove_BytesReceivedChanged<
13302            Identity: ICoreWebView2DownloadOperation_Impl,
13303            const OFFSET: isize,
13304        >(
13305            this: *mut core::ffi::c_void,
13306            token: i64,
13307        ) -> windows_core::HRESULT {
13308            unsafe {
13309                let this: &Identity =
13310                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13311                ICoreWebView2DownloadOperation_Impl::remove_BytesReceivedChanged(
13312                    this,
13313                    core::mem::transmute_copy(&token),
13314                )
13315                .into()
13316            }
13317        }
13318        unsafe extern "system" fn add_EstimatedEndTimeChanged<
13319            Identity: ICoreWebView2DownloadOperation_Impl,
13320            const OFFSET: isize,
13321        >(
13322            this: *mut core::ffi::c_void,
13323            eventhandler: *mut core::ffi::c_void,
13324            token: *mut i64,
13325        ) -> windows_core::HRESULT {
13326            unsafe {
13327                let this: &Identity =
13328                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13329                ICoreWebView2DownloadOperation_Impl::add_EstimatedEndTimeChanged(
13330                    this,
13331                    core::mem::transmute_copy(&eventhandler),
13332                    core::mem::transmute_copy(&token),
13333                )
13334                .into()
13335            }
13336        }
13337        unsafe extern "system" fn remove_EstimatedEndTimeChanged<
13338            Identity: ICoreWebView2DownloadOperation_Impl,
13339            const OFFSET: isize,
13340        >(
13341            this: *mut core::ffi::c_void,
13342            token: i64,
13343        ) -> windows_core::HRESULT {
13344            unsafe {
13345                let this: &Identity =
13346                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13347                ICoreWebView2DownloadOperation_Impl::remove_EstimatedEndTimeChanged(
13348                    this,
13349                    core::mem::transmute_copy(&token),
13350                )
13351                .into()
13352            }
13353        }
13354        unsafe extern "system" fn add_StateChanged<
13355            Identity: ICoreWebView2DownloadOperation_Impl,
13356            const OFFSET: isize,
13357        >(
13358            this: *mut core::ffi::c_void,
13359            eventhandler: *mut core::ffi::c_void,
13360            token: *mut i64,
13361        ) -> windows_core::HRESULT {
13362            unsafe {
13363                let this: &Identity =
13364                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13365                ICoreWebView2DownloadOperation_Impl::add_StateChanged(
13366                    this,
13367                    core::mem::transmute_copy(&eventhandler),
13368                    core::mem::transmute_copy(&token),
13369                )
13370                .into()
13371            }
13372        }
13373        unsafe extern "system" fn remove_StateChanged<
13374            Identity: ICoreWebView2DownloadOperation_Impl,
13375            const OFFSET: isize,
13376        >(
13377            this: *mut core::ffi::c_void,
13378            token: i64,
13379        ) -> windows_core::HRESULT {
13380            unsafe {
13381                let this: &Identity =
13382                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13383                ICoreWebView2DownloadOperation_Impl::remove_StateChanged(
13384                    this,
13385                    core::mem::transmute_copy(&token),
13386                )
13387                .into()
13388            }
13389        }
13390        unsafe extern "system" fn Uri<
13391            Identity: ICoreWebView2DownloadOperation_Impl,
13392            const OFFSET: isize,
13393        >(
13394            this: *mut core::ffi::c_void,
13395            uri: *mut windows_core::PWSTR,
13396        ) -> windows_core::HRESULT {
13397            unsafe {
13398                let this: &Identity =
13399                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13400                ICoreWebView2DownloadOperation_Impl::Uri(this, core::mem::transmute_copy(&uri))
13401                    .into()
13402            }
13403        }
13404        unsafe extern "system" fn ContentDisposition<
13405            Identity: ICoreWebView2DownloadOperation_Impl,
13406            const OFFSET: isize,
13407        >(
13408            this: *mut core::ffi::c_void,
13409            contentdisposition: *mut windows_core::PWSTR,
13410        ) -> windows_core::HRESULT {
13411            unsafe {
13412                let this: &Identity =
13413                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13414                ICoreWebView2DownloadOperation_Impl::ContentDisposition(
13415                    this,
13416                    core::mem::transmute_copy(&contentdisposition),
13417                )
13418                .into()
13419            }
13420        }
13421        unsafe extern "system" fn MimeType<
13422            Identity: ICoreWebView2DownloadOperation_Impl,
13423            const OFFSET: isize,
13424        >(
13425            this: *mut core::ffi::c_void,
13426            mimetype: *mut windows_core::PWSTR,
13427        ) -> windows_core::HRESULT {
13428            unsafe {
13429                let this: &Identity =
13430                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13431                ICoreWebView2DownloadOperation_Impl::MimeType(
13432                    this,
13433                    core::mem::transmute_copy(&mimetype),
13434                )
13435                .into()
13436            }
13437        }
13438        unsafe extern "system" fn TotalBytesToReceive<
13439            Identity: ICoreWebView2DownloadOperation_Impl,
13440            const OFFSET: isize,
13441        >(
13442            this: *mut core::ffi::c_void,
13443            totalbytestoreceive: *mut i64,
13444        ) -> windows_core::HRESULT {
13445            unsafe {
13446                let this: &Identity =
13447                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13448                ICoreWebView2DownloadOperation_Impl::TotalBytesToReceive(
13449                    this,
13450                    core::mem::transmute_copy(&totalbytestoreceive),
13451                )
13452                .into()
13453            }
13454        }
13455        unsafe extern "system" fn BytesReceived<
13456            Identity: ICoreWebView2DownloadOperation_Impl,
13457            const OFFSET: isize,
13458        >(
13459            this: *mut core::ffi::c_void,
13460            bytesreceived: *mut i64,
13461        ) -> windows_core::HRESULT {
13462            unsafe {
13463                let this: &Identity =
13464                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13465                ICoreWebView2DownloadOperation_Impl::BytesReceived(
13466                    this,
13467                    core::mem::transmute_copy(&bytesreceived),
13468                )
13469                .into()
13470            }
13471        }
13472        unsafe extern "system" fn EstimatedEndTime<
13473            Identity: ICoreWebView2DownloadOperation_Impl,
13474            const OFFSET: isize,
13475        >(
13476            this: *mut core::ffi::c_void,
13477            estimatedendtime: *mut windows_core::PWSTR,
13478        ) -> windows_core::HRESULT {
13479            unsafe {
13480                let this: &Identity =
13481                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13482                ICoreWebView2DownloadOperation_Impl::EstimatedEndTime(
13483                    this,
13484                    core::mem::transmute_copy(&estimatedendtime),
13485                )
13486                .into()
13487            }
13488        }
13489        unsafe extern "system" fn ResultFilePath<
13490            Identity: ICoreWebView2DownloadOperation_Impl,
13491            const OFFSET: isize,
13492        >(
13493            this: *mut core::ffi::c_void,
13494            resultfilepath: *mut windows_core::PWSTR,
13495        ) -> windows_core::HRESULT {
13496            unsafe {
13497                let this: &Identity =
13498                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13499                ICoreWebView2DownloadOperation_Impl::ResultFilePath(
13500                    this,
13501                    core::mem::transmute_copy(&resultfilepath),
13502                )
13503                .into()
13504            }
13505        }
13506        unsafe extern "system" fn State<
13507            Identity: ICoreWebView2DownloadOperation_Impl,
13508            const OFFSET: isize,
13509        >(
13510            this: *mut core::ffi::c_void,
13511            downloadstate: *mut COREWEBVIEW2_DOWNLOAD_STATE,
13512        ) -> windows_core::HRESULT {
13513            unsafe {
13514                let this: &Identity =
13515                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13516                ICoreWebView2DownloadOperation_Impl::State(
13517                    this,
13518                    core::mem::transmute_copy(&downloadstate),
13519                )
13520                .into()
13521            }
13522        }
13523        unsafe extern "system" fn InterruptReason<
13524            Identity: ICoreWebView2DownloadOperation_Impl,
13525            const OFFSET: isize,
13526        >(
13527            this: *mut core::ffi::c_void,
13528            interruptreason: *mut COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON,
13529        ) -> windows_core::HRESULT {
13530            unsafe {
13531                let this: &Identity =
13532                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13533                ICoreWebView2DownloadOperation_Impl::InterruptReason(
13534                    this,
13535                    core::mem::transmute_copy(&interruptreason),
13536                )
13537                .into()
13538            }
13539        }
13540        unsafe extern "system" fn Cancel<
13541            Identity: ICoreWebView2DownloadOperation_Impl,
13542            const OFFSET: isize,
13543        >(
13544            this: *mut core::ffi::c_void,
13545        ) -> windows_core::HRESULT {
13546            unsafe {
13547                let this: &Identity =
13548                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13549                ICoreWebView2DownloadOperation_Impl::Cancel(this).into()
13550            }
13551        }
13552        unsafe extern "system" fn Pause<
13553            Identity: ICoreWebView2DownloadOperation_Impl,
13554            const OFFSET: isize,
13555        >(
13556            this: *mut core::ffi::c_void,
13557        ) -> windows_core::HRESULT {
13558            unsafe {
13559                let this: &Identity =
13560                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13561                ICoreWebView2DownloadOperation_Impl::Pause(this).into()
13562            }
13563        }
13564        unsafe extern "system" fn Resume<
13565            Identity: ICoreWebView2DownloadOperation_Impl,
13566            const OFFSET: isize,
13567        >(
13568            this: *mut core::ffi::c_void,
13569        ) -> windows_core::HRESULT {
13570            unsafe {
13571                let this: &Identity =
13572                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13573                ICoreWebView2DownloadOperation_Impl::Resume(this).into()
13574            }
13575        }
13576        unsafe extern "system" fn CanResume<
13577            Identity: ICoreWebView2DownloadOperation_Impl,
13578            const OFFSET: isize,
13579        >(
13580            this: *mut core::ffi::c_void,
13581            canresume: *mut windows_core::BOOL,
13582        ) -> windows_core::HRESULT {
13583            unsafe {
13584                let this: &Identity =
13585                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13586                ICoreWebView2DownloadOperation_Impl::CanResume(
13587                    this,
13588                    core::mem::transmute_copy(&canresume),
13589                )
13590                .into()
13591            }
13592        }
13593        Self {
13594            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13595            add_BytesReceivedChanged: add_BytesReceivedChanged::<Identity, OFFSET>,
13596            remove_BytesReceivedChanged: remove_BytesReceivedChanged::<Identity, OFFSET>,
13597            add_EstimatedEndTimeChanged: add_EstimatedEndTimeChanged::<Identity, OFFSET>,
13598            remove_EstimatedEndTimeChanged: remove_EstimatedEndTimeChanged::<Identity, OFFSET>,
13599            add_StateChanged: add_StateChanged::<Identity, OFFSET>,
13600            remove_StateChanged: remove_StateChanged::<Identity, OFFSET>,
13601            Uri: Uri::<Identity, OFFSET>,
13602            ContentDisposition: ContentDisposition::<Identity, OFFSET>,
13603            MimeType: MimeType::<Identity, OFFSET>,
13604            TotalBytesToReceive: TotalBytesToReceive::<Identity, OFFSET>,
13605            BytesReceived: BytesReceived::<Identity, OFFSET>,
13606            EstimatedEndTime: EstimatedEndTime::<Identity, OFFSET>,
13607            ResultFilePath: ResultFilePath::<Identity, OFFSET>,
13608            State: State::<Identity, OFFSET>,
13609            InterruptReason: InterruptReason::<Identity, OFFSET>,
13610            Cancel: Cancel::<Identity, OFFSET>,
13611            Pause: Pause::<Identity, OFFSET>,
13612            Resume: Resume::<Identity, OFFSET>,
13613            CanResume: CanResume::<Identity, OFFSET>,
13614        }
13615    }
13616    pub fn matches(iid: &windows_core::GUID) -> bool {
13617        iid == &<ICoreWebView2DownloadOperation as windows_core::Interface>::IID
13618    }
13619}
13620impl windows_core::RuntimeName for ICoreWebView2DownloadOperation {}
13621windows_core::imp::define_interface!(
13622    ICoreWebView2DownloadStartingEventArgs,
13623    ICoreWebView2DownloadStartingEventArgs_Vtbl,
13624    0xe99bbe21_43e9_4544_a732_282764eafa60
13625);
13626windows_core::imp::interface_hierarchy!(
13627    ICoreWebView2DownloadStartingEventArgs,
13628    windows_core::IUnknown
13629);
13630impl ICoreWebView2DownloadStartingEventArgs {
13631    pub unsafe fn DownloadOperation(&self) -> windows_core::Result<ICoreWebView2DownloadOperation> {
13632        unsafe {
13633            let mut result__ = core::mem::zeroed();
13634            (windows_core::Interface::vtable(self).DownloadOperation)(
13635                windows_core::Interface::as_raw(self),
13636                &mut result__,
13637            )
13638            .and_then(|| windows_core::Type::from_abi(result__))
13639        }
13640    }
13641    pub unsafe fn Cancel(&self, cancel: *mut windows_core::BOOL) -> windows_core::Result<()> {
13642        unsafe {
13643            (windows_core::Interface::vtable(self).Cancel)(
13644                windows_core::Interface::as_raw(self),
13645                cancel as _,
13646            )
13647            .ok()
13648        }
13649    }
13650    pub unsafe fn SetCancel(&self, cancel: bool) -> windows_core::Result<()> {
13651        unsafe {
13652            (windows_core::Interface::vtable(self).SetCancel)(
13653                windows_core::Interface::as_raw(self),
13654                cancel.into(),
13655            )
13656            .ok()
13657        }
13658    }
13659    pub unsafe fn ResultFilePath(
13660        &self,
13661        resultfilepath: *mut windows_core::PWSTR,
13662    ) -> windows_core::Result<()> {
13663        unsafe {
13664            (windows_core::Interface::vtable(self).ResultFilePath)(
13665                windows_core::Interface::as_raw(self),
13666                resultfilepath as _,
13667            )
13668            .ok()
13669        }
13670    }
13671    pub unsafe fn SetResultFilePath<P0>(&self, resultfilepath: P0) -> windows_core::Result<()>
13672    where
13673        P0: windows_core::Param<windows_core::PCWSTR>,
13674    {
13675        unsafe {
13676            (windows_core::Interface::vtable(self).SetResultFilePath)(
13677                windows_core::Interface::as_raw(self),
13678                resultfilepath.param().abi(),
13679            )
13680            .ok()
13681        }
13682    }
13683    pub unsafe fn Handled(&self, handled: *mut windows_core::BOOL) -> windows_core::Result<()> {
13684        unsafe {
13685            (windows_core::Interface::vtable(self).Handled)(
13686                windows_core::Interface::as_raw(self),
13687                handled as _,
13688            )
13689            .ok()
13690        }
13691    }
13692    pub unsafe fn SetHandled(&self, handled: bool) -> windows_core::Result<()> {
13693        unsafe {
13694            (windows_core::Interface::vtable(self).SetHandled)(
13695                windows_core::Interface::as_raw(self),
13696                handled.into(),
13697            )
13698            .ok()
13699        }
13700    }
13701    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
13702        unsafe {
13703            let mut result__ = core::mem::zeroed();
13704            (windows_core::Interface::vtable(self).GetDeferral)(
13705                windows_core::Interface::as_raw(self),
13706                &mut result__,
13707            )
13708            .and_then(|| windows_core::Type::from_abi(result__))
13709        }
13710    }
13711}
13712#[repr(C)]
13713#[doc(hidden)]
13714pub struct ICoreWebView2DownloadStartingEventArgs_Vtbl {
13715    pub base__: windows_core::IUnknown_Vtbl,
13716    pub DownloadOperation: unsafe extern "system" fn(
13717        *mut core::ffi::c_void,
13718        *mut *mut core::ffi::c_void,
13719    ) -> windows_core::HRESULT,
13720    pub Cancel: unsafe extern "system" fn(
13721        *mut core::ffi::c_void,
13722        *mut windows_core::BOOL,
13723    ) -> windows_core::HRESULT,
13724    pub SetCancel: unsafe extern "system" fn(
13725        *mut core::ffi::c_void,
13726        windows_core::BOOL,
13727    ) -> windows_core::HRESULT,
13728    pub ResultFilePath: unsafe extern "system" fn(
13729        *mut core::ffi::c_void,
13730        *mut windows_core::PWSTR,
13731    ) -> windows_core::HRESULT,
13732    pub SetResultFilePath: unsafe extern "system" fn(
13733        *mut core::ffi::c_void,
13734        windows_core::PCWSTR,
13735    ) -> windows_core::HRESULT,
13736    pub Handled: unsafe extern "system" fn(
13737        *mut core::ffi::c_void,
13738        *mut windows_core::BOOL,
13739    ) -> windows_core::HRESULT,
13740    pub SetHandled: unsafe extern "system" fn(
13741        *mut core::ffi::c_void,
13742        windows_core::BOOL,
13743    ) -> windows_core::HRESULT,
13744    pub GetDeferral: unsafe extern "system" fn(
13745        *mut core::ffi::c_void,
13746        *mut *mut core::ffi::c_void,
13747    ) -> windows_core::HRESULT,
13748}
13749pub trait ICoreWebView2DownloadStartingEventArgs_Impl: windows_core::IUnknownImpl {
13750    fn DownloadOperation(&self) -> windows_core::Result<ICoreWebView2DownloadOperation>;
13751    fn Cancel(&self, cancel: *mut windows_core::BOOL) -> windows_core::Result<()>;
13752    fn SetCancel(&self, cancel: windows_core::BOOL) -> windows_core::Result<()>;
13753    fn ResultFilePath(&self, resultfilepath: *mut windows_core::PWSTR) -> windows_core::Result<()>;
13754    fn SetResultFilePath(&self, resultfilepath: &windows_core::PCWSTR) -> windows_core::Result<()>;
13755    fn Handled(&self, handled: *mut windows_core::BOOL) -> windows_core::Result<()>;
13756    fn SetHandled(&self, handled: windows_core::BOOL) -> windows_core::Result<()>;
13757    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
13758}
13759impl ICoreWebView2DownloadStartingEventArgs_Vtbl {
13760    pub const fn new<Identity: ICoreWebView2DownloadStartingEventArgs_Impl, const OFFSET: isize>(
13761    ) -> Self {
13762        unsafe extern "system" fn DownloadOperation<
13763            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13764            const OFFSET: isize,
13765        >(
13766            this: *mut core::ffi::c_void,
13767            downloadoperation: *mut *mut core::ffi::c_void,
13768        ) -> windows_core::HRESULT {
13769            unsafe {
13770                let this: &Identity =
13771                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13772                match ICoreWebView2DownloadStartingEventArgs_Impl::DownloadOperation(this) {
13773                    Ok(ok__) => {
13774                        downloadoperation.write(core::mem::transmute(ok__));
13775                        windows_core::HRESULT(0)
13776                    }
13777                    Err(err) => err.into(),
13778                }
13779            }
13780        }
13781        unsafe extern "system" fn Cancel<
13782            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13783            const OFFSET: isize,
13784        >(
13785            this: *mut core::ffi::c_void,
13786            cancel: *mut windows_core::BOOL,
13787        ) -> windows_core::HRESULT {
13788            unsafe {
13789                let this: &Identity =
13790                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13791                ICoreWebView2DownloadStartingEventArgs_Impl::Cancel(
13792                    this,
13793                    core::mem::transmute_copy(&cancel),
13794                )
13795                .into()
13796            }
13797        }
13798        unsafe extern "system" fn SetCancel<
13799            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13800            const OFFSET: isize,
13801        >(
13802            this: *mut core::ffi::c_void,
13803            cancel: windows_core::BOOL,
13804        ) -> windows_core::HRESULT {
13805            unsafe {
13806                let this: &Identity =
13807                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13808                ICoreWebView2DownloadStartingEventArgs_Impl::SetCancel(
13809                    this,
13810                    core::mem::transmute_copy(&cancel),
13811                )
13812                .into()
13813            }
13814        }
13815        unsafe extern "system" fn ResultFilePath<
13816            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13817            const OFFSET: isize,
13818        >(
13819            this: *mut core::ffi::c_void,
13820            resultfilepath: *mut windows_core::PWSTR,
13821        ) -> windows_core::HRESULT {
13822            unsafe {
13823                let this: &Identity =
13824                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13825                ICoreWebView2DownloadStartingEventArgs_Impl::ResultFilePath(
13826                    this,
13827                    core::mem::transmute_copy(&resultfilepath),
13828                )
13829                .into()
13830            }
13831        }
13832        unsafe extern "system" fn SetResultFilePath<
13833            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13834            const OFFSET: isize,
13835        >(
13836            this: *mut core::ffi::c_void,
13837            resultfilepath: windows_core::PCWSTR,
13838        ) -> windows_core::HRESULT {
13839            unsafe {
13840                let this: &Identity =
13841                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13842                ICoreWebView2DownloadStartingEventArgs_Impl::SetResultFilePath(
13843                    this,
13844                    core::mem::transmute(&resultfilepath),
13845                )
13846                .into()
13847            }
13848        }
13849        unsafe extern "system" fn Handled<
13850            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13851            const OFFSET: isize,
13852        >(
13853            this: *mut core::ffi::c_void,
13854            handled: *mut windows_core::BOOL,
13855        ) -> windows_core::HRESULT {
13856            unsafe {
13857                let this: &Identity =
13858                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13859                ICoreWebView2DownloadStartingEventArgs_Impl::Handled(
13860                    this,
13861                    core::mem::transmute_copy(&handled),
13862                )
13863                .into()
13864            }
13865        }
13866        unsafe extern "system" fn SetHandled<
13867            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13868            const OFFSET: isize,
13869        >(
13870            this: *mut core::ffi::c_void,
13871            handled: windows_core::BOOL,
13872        ) -> windows_core::HRESULT {
13873            unsafe {
13874                let this: &Identity =
13875                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13876                ICoreWebView2DownloadStartingEventArgs_Impl::SetHandled(
13877                    this,
13878                    core::mem::transmute_copy(&handled),
13879                )
13880                .into()
13881            }
13882        }
13883        unsafe extern "system" fn GetDeferral<
13884            Identity: ICoreWebView2DownloadStartingEventArgs_Impl,
13885            const OFFSET: isize,
13886        >(
13887            this: *mut core::ffi::c_void,
13888            deferral: *mut *mut core::ffi::c_void,
13889        ) -> windows_core::HRESULT {
13890            unsafe {
13891                let this: &Identity =
13892                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13893                match ICoreWebView2DownloadStartingEventArgs_Impl::GetDeferral(this) {
13894                    Ok(ok__) => {
13895                        deferral.write(core::mem::transmute(ok__));
13896                        windows_core::HRESULT(0)
13897                    }
13898                    Err(err) => err.into(),
13899                }
13900            }
13901        }
13902        Self {
13903            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13904            DownloadOperation: DownloadOperation::<Identity, OFFSET>,
13905            Cancel: Cancel::<Identity, OFFSET>,
13906            SetCancel: SetCancel::<Identity, OFFSET>,
13907            ResultFilePath: ResultFilePath::<Identity, OFFSET>,
13908            SetResultFilePath: SetResultFilePath::<Identity, OFFSET>,
13909            Handled: Handled::<Identity, OFFSET>,
13910            SetHandled: SetHandled::<Identity, OFFSET>,
13911            GetDeferral: GetDeferral::<Identity, OFFSET>,
13912        }
13913    }
13914    pub fn matches(iid: &windows_core::GUID) -> bool {
13915        iid == &<ICoreWebView2DownloadStartingEventArgs as windows_core::Interface>::IID
13916    }
13917}
13918impl windows_core::RuntimeName for ICoreWebView2DownloadStartingEventArgs {}
13919windows_core::imp::define_interface!(
13920    ICoreWebView2DownloadStartingEventHandler,
13921    ICoreWebView2DownloadStartingEventHandler_Vtbl,
13922    0xefedc989_c396_41ca_83f7_07f845a55724
13923);
13924windows_core::imp::interface_hierarchy!(
13925    ICoreWebView2DownloadStartingEventHandler,
13926    windows_core::IUnknown
13927);
13928impl ICoreWebView2DownloadStartingEventHandler {
13929    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
13930    where
13931        P0: windows_core::Param<ICoreWebView2>,
13932        P1: windows_core::Param<ICoreWebView2DownloadStartingEventArgs>,
13933    {
13934        unsafe {
13935            (windows_core::Interface::vtable(self).Invoke)(
13936                windows_core::Interface::as_raw(self),
13937                sender.param().abi(),
13938                args.param().abi(),
13939            )
13940            .ok()
13941        }
13942    }
13943}
13944#[repr(C)]
13945#[doc(hidden)]
13946pub struct ICoreWebView2DownloadStartingEventHandler_Vtbl {
13947    pub base__: windows_core::IUnknown_Vtbl,
13948    pub Invoke: unsafe extern "system" fn(
13949        *mut core::ffi::c_void,
13950        *mut core::ffi::c_void,
13951        *mut core::ffi::c_void,
13952    ) -> windows_core::HRESULT,
13953}
13954pub trait ICoreWebView2DownloadStartingEventHandler_Impl: windows_core::IUnknownImpl {
13955    fn Invoke(
13956        &self,
13957        sender: windows_core::Ref<'_, ICoreWebView2>,
13958        args: windows_core::Ref<'_, ICoreWebView2DownloadStartingEventArgs>,
13959    ) -> windows_core::Result<()>;
13960}
13961impl ICoreWebView2DownloadStartingEventHandler_Vtbl {
13962    pub const fn new<
13963        Identity: ICoreWebView2DownloadStartingEventHandler_Impl,
13964        const OFFSET: isize,
13965    >() -> Self {
13966        unsafe extern "system" fn Invoke<
13967            Identity: ICoreWebView2DownloadStartingEventHandler_Impl,
13968            const OFFSET: isize,
13969        >(
13970            this: *mut core::ffi::c_void,
13971            sender: *mut core::ffi::c_void,
13972            args: *mut core::ffi::c_void,
13973        ) -> windows_core::HRESULT {
13974            unsafe {
13975                let this: &Identity =
13976                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13977                ICoreWebView2DownloadStartingEventHandler_Impl::Invoke(
13978                    this,
13979                    core::mem::transmute_copy(&sender),
13980                    core::mem::transmute_copy(&args),
13981                )
13982                .into()
13983            }
13984        }
13985        Self {
13986            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13987            Invoke: Invoke::<Identity, OFFSET>,
13988        }
13989    }
13990    pub fn matches(iid: &windows_core::GUID) -> bool {
13991        iid == &<ICoreWebView2DownloadStartingEventHandler as windows_core::Interface>::IID
13992    }
13993}
13994impl windows_core::RuntimeName for ICoreWebView2DownloadStartingEventHandler {}
13995windows_core::imp::define_interface!(
13996    ICoreWebView2Environment,
13997    ICoreWebView2Environment_Vtbl,
13998    0xb96d755e_0319_4e92_a296_23436f46a1fc
13999);
14000windows_core::imp::interface_hierarchy!(ICoreWebView2Environment, windows_core::IUnknown);
14001impl ICoreWebView2Environment {
14002    pub unsafe fn CreateCoreWebView2Controller<P1>(
14003        &self,
14004        parentwindow: windows::Win32::Foundation::HWND,
14005        handler: P1,
14006    ) -> windows_core::Result<()>
14007    where
14008        P1: windows_core::Param<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>,
14009    {
14010        unsafe {
14011            (windows_core::Interface::vtable(self).CreateCoreWebView2Controller)(
14012                windows_core::Interface::as_raw(self),
14013                parentwindow,
14014                handler.param().abi(),
14015            )
14016            .ok()
14017        }
14018    }
14019    pub unsafe fn CreateWebResourceResponse<P0, P2, P3>(
14020        &self,
14021        content: P0,
14022        statuscode: i32,
14023        reasonphrase: P2,
14024        headers: P3,
14025    ) -> windows_core::Result<ICoreWebView2WebResourceResponse>
14026    where
14027        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
14028        P2: windows_core::Param<windows_core::PCWSTR>,
14029        P3: windows_core::Param<windows_core::PCWSTR>,
14030    {
14031        unsafe {
14032            let mut result__ = core::mem::zeroed();
14033            (windows_core::Interface::vtable(self).CreateWebResourceResponse)(
14034                windows_core::Interface::as_raw(self),
14035                content.param().abi(),
14036                statuscode,
14037                reasonphrase.param().abi(),
14038                headers.param().abi(),
14039                &mut result__,
14040            )
14041            .and_then(|| windows_core::Type::from_abi(result__))
14042        }
14043    }
14044    pub unsafe fn BrowserVersionString(
14045        &self,
14046        versioninfo: *mut windows_core::PWSTR,
14047    ) -> windows_core::Result<()> {
14048        unsafe {
14049            (windows_core::Interface::vtable(self).BrowserVersionString)(
14050                windows_core::Interface::as_raw(self),
14051                versioninfo as _,
14052            )
14053            .ok()
14054        }
14055    }
14056    pub unsafe fn add_NewBrowserVersionAvailable<P0>(
14057        &self,
14058        eventhandler: P0,
14059        token: *mut i64,
14060    ) -> windows_core::Result<()>
14061    where
14062        P0: windows_core::Param<ICoreWebView2NewBrowserVersionAvailableEventHandler>,
14063    {
14064        unsafe {
14065            (windows_core::Interface::vtable(self).add_NewBrowserVersionAvailable)(
14066                windows_core::Interface::as_raw(self),
14067                eventhandler.param().abi(),
14068                token as _,
14069            )
14070            .ok()
14071        }
14072    }
14073    pub unsafe fn remove_NewBrowserVersionAvailable(&self, token: i64) -> windows_core::Result<()> {
14074        unsafe {
14075            (windows_core::Interface::vtable(self).remove_NewBrowserVersionAvailable)(
14076                windows_core::Interface::as_raw(self),
14077                token,
14078            )
14079            .ok()
14080        }
14081    }
14082}
14083#[repr(C)]
14084#[doc(hidden)]
14085pub struct ICoreWebView2Environment_Vtbl {
14086    pub base__: windows_core::IUnknown_Vtbl,
14087    pub CreateCoreWebView2Controller: unsafe extern "system" fn(
14088        *mut core::ffi::c_void,
14089        windows::Win32::Foundation::HWND,
14090        *mut core::ffi::c_void,
14091    ) -> windows_core::HRESULT,
14092    pub CreateWebResourceResponse: unsafe extern "system" fn(
14093        *mut core::ffi::c_void,
14094        *mut core::ffi::c_void,
14095        i32,
14096        windows_core::PCWSTR,
14097        windows_core::PCWSTR,
14098        *mut *mut core::ffi::c_void,
14099    ) -> windows_core::HRESULT,
14100    pub BrowserVersionString: unsafe extern "system" fn(
14101        *mut core::ffi::c_void,
14102        *mut windows_core::PWSTR,
14103    ) -> windows_core::HRESULT,
14104    pub add_NewBrowserVersionAvailable: unsafe extern "system" fn(
14105        *mut core::ffi::c_void,
14106        *mut core::ffi::c_void,
14107        *mut i64,
14108    ) -> windows_core::HRESULT,
14109    pub remove_NewBrowserVersionAvailable:
14110        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
14111}
14112pub trait ICoreWebView2Environment_Impl: windows_core::IUnknownImpl {
14113    fn CreateCoreWebView2Controller(
14114        &self,
14115        parentwindow: windows::Win32::Foundation::HWND,
14116        handler: windows_core::Ref<'_, ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>,
14117    ) -> windows_core::Result<()>;
14118    fn CreateWebResourceResponse(
14119        &self,
14120        content: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
14121        statuscode: i32,
14122        reasonphrase: &windows_core::PCWSTR,
14123        headers: &windows_core::PCWSTR,
14124    ) -> windows_core::Result<ICoreWebView2WebResourceResponse>;
14125    fn BrowserVersionString(
14126        &self,
14127        versioninfo: *mut windows_core::PWSTR,
14128    ) -> windows_core::Result<()>;
14129    fn add_NewBrowserVersionAvailable(
14130        &self,
14131        eventhandler: windows_core::Ref<'_, ICoreWebView2NewBrowserVersionAvailableEventHandler>,
14132        token: *mut i64,
14133    ) -> windows_core::Result<()>;
14134    fn remove_NewBrowserVersionAvailable(&self, token: i64) -> windows_core::Result<()>;
14135}
14136impl ICoreWebView2Environment_Vtbl {
14137    pub const fn new<Identity: ICoreWebView2Environment_Impl, const OFFSET: isize>() -> Self {
14138        unsafe extern "system" fn CreateCoreWebView2Controller<
14139            Identity: ICoreWebView2Environment_Impl,
14140            const OFFSET: isize,
14141        >(
14142            this: *mut core::ffi::c_void,
14143            parentwindow: windows::Win32::Foundation::HWND,
14144            handler: *mut core::ffi::c_void,
14145        ) -> windows_core::HRESULT {
14146            unsafe {
14147                let this: &Identity =
14148                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14149                ICoreWebView2Environment_Impl::CreateCoreWebView2Controller(
14150                    this,
14151                    core::mem::transmute_copy(&parentwindow),
14152                    core::mem::transmute_copy(&handler),
14153                )
14154                .into()
14155            }
14156        }
14157        unsafe extern "system" fn CreateWebResourceResponse<
14158            Identity: ICoreWebView2Environment_Impl,
14159            const OFFSET: isize,
14160        >(
14161            this: *mut core::ffi::c_void,
14162            content: *mut core::ffi::c_void,
14163            statuscode: i32,
14164            reasonphrase: windows_core::PCWSTR,
14165            headers: windows_core::PCWSTR,
14166            response: *mut *mut core::ffi::c_void,
14167        ) -> windows_core::HRESULT {
14168            unsafe {
14169                let this: &Identity =
14170                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14171                match ICoreWebView2Environment_Impl::CreateWebResourceResponse(
14172                    this,
14173                    core::mem::transmute_copy(&content),
14174                    core::mem::transmute_copy(&statuscode),
14175                    core::mem::transmute(&reasonphrase),
14176                    core::mem::transmute(&headers),
14177                ) {
14178                    Ok(ok__) => {
14179                        response.write(core::mem::transmute(ok__));
14180                        windows_core::HRESULT(0)
14181                    }
14182                    Err(err) => err.into(),
14183                }
14184            }
14185        }
14186        unsafe extern "system" fn BrowserVersionString<
14187            Identity: ICoreWebView2Environment_Impl,
14188            const OFFSET: isize,
14189        >(
14190            this: *mut core::ffi::c_void,
14191            versioninfo: *mut windows_core::PWSTR,
14192        ) -> windows_core::HRESULT {
14193            unsafe {
14194                let this: &Identity =
14195                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14196                ICoreWebView2Environment_Impl::BrowserVersionString(
14197                    this,
14198                    core::mem::transmute_copy(&versioninfo),
14199                )
14200                .into()
14201            }
14202        }
14203        unsafe extern "system" fn add_NewBrowserVersionAvailable<
14204            Identity: ICoreWebView2Environment_Impl,
14205            const OFFSET: isize,
14206        >(
14207            this: *mut core::ffi::c_void,
14208            eventhandler: *mut core::ffi::c_void,
14209            token: *mut i64,
14210        ) -> windows_core::HRESULT {
14211            unsafe {
14212                let this: &Identity =
14213                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14214                ICoreWebView2Environment_Impl::add_NewBrowserVersionAvailable(
14215                    this,
14216                    core::mem::transmute_copy(&eventhandler),
14217                    core::mem::transmute_copy(&token),
14218                )
14219                .into()
14220            }
14221        }
14222        unsafe extern "system" fn remove_NewBrowserVersionAvailable<
14223            Identity: ICoreWebView2Environment_Impl,
14224            const OFFSET: isize,
14225        >(
14226            this: *mut core::ffi::c_void,
14227            token: i64,
14228        ) -> windows_core::HRESULT {
14229            unsafe {
14230                let this: &Identity =
14231                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14232                ICoreWebView2Environment_Impl::remove_NewBrowserVersionAvailable(
14233                    this,
14234                    core::mem::transmute_copy(&token),
14235                )
14236                .into()
14237            }
14238        }
14239        Self {
14240            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
14241            CreateCoreWebView2Controller: CreateCoreWebView2Controller::<Identity, OFFSET>,
14242            CreateWebResourceResponse: CreateWebResourceResponse::<Identity, OFFSET>,
14243            BrowserVersionString: BrowserVersionString::<Identity, OFFSET>,
14244            add_NewBrowserVersionAvailable: add_NewBrowserVersionAvailable::<Identity, OFFSET>,
14245            remove_NewBrowserVersionAvailable: remove_NewBrowserVersionAvailable::<Identity, OFFSET>,
14246        }
14247    }
14248    pub fn matches(iid: &windows_core::GUID) -> bool {
14249        iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
14250    }
14251}
14252impl windows_core::RuntimeName for ICoreWebView2Environment {}
14253windows_core::imp::define_interface!(
14254    ICoreWebView2Environment10,
14255    ICoreWebView2Environment10_Vtbl,
14256    0xee0eb9df_6f12_46ce_b53f_3f47b9c928e0
14257);
14258impl core::ops::Deref for ICoreWebView2Environment10 {
14259    type Target = ICoreWebView2Environment9;
14260    fn deref(&self) -> &Self::Target {
14261        unsafe { core::mem::transmute(self) }
14262    }
14263}
14264windows_core::imp::interface_hierarchy!(
14265    ICoreWebView2Environment10,
14266    windows_core::IUnknown,
14267    ICoreWebView2Environment,
14268    ICoreWebView2Environment2,
14269    ICoreWebView2Environment3,
14270    ICoreWebView2Environment4,
14271    ICoreWebView2Environment5,
14272    ICoreWebView2Environment6,
14273    ICoreWebView2Environment7,
14274    ICoreWebView2Environment8,
14275    ICoreWebView2Environment9
14276);
14277impl ICoreWebView2Environment10 {
14278    pub unsafe fn CreateCoreWebView2ControllerOptions(
14279        &self,
14280    ) -> windows_core::Result<ICoreWebView2ControllerOptions> {
14281        unsafe {
14282            let mut result__ = core::mem::zeroed();
14283            (windows_core::Interface::vtable(self).CreateCoreWebView2ControllerOptions)(
14284                windows_core::Interface::as_raw(self),
14285                &mut result__,
14286            )
14287            .and_then(|| windows_core::Type::from_abi(result__))
14288        }
14289    }
14290    pub unsafe fn CreateCoreWebView2ControllerWithOptions<P1, P2>(
14291        &self,
14292        parentwindow: windows::Win32::Foundation::HWND,
14293        options: P1,
14294        handler: P2,
14295    ) -> windows_core::Result<()>
14296    where
14297        P1: windows_core::Param<ICoreWebView2ControllerOptions>,
14298        P2: windows_core::Param<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>,
14299    {
14300        unsafe {
14301            (windows_core::Interface::vtable(self).CreateCoreWebView2ControllerWithOptions)(
14302                windows_core::Interface::as_raw(self),
14303                parentwindow,
14304                options.param().abi(),
14305                handler.param().abi(),
14306            )
14307            .ok()
14308        }
14309    }
14310    pub unsafe fn CreateCoreWebView2CompositionControllerWithOptions<P1, P2>(
14311        &self,
14312        parentwindow: windows::Win32::Foundation::HWND,
14313        options: P1,
14314        handler: P2,
14315    ) -> windows_core::Result<()>
14316    where
14317        P1: windows_core::Param<ICoreWebView2ControllerOptions>,
14318        P2: windows_core::Param<
14319            ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler,
14320        >,
14321    {
14322        unsafe {
14323            (windows_core::Interface::vtable(self)
14324                .CreateCoreWebView2CompositionControllerWithOptions)(
14325                windows_core::Interface::as_raw(self),
14326                parentwindow,
14327                options.param().abi(),
14328                handler.param().abi(),
14329            )
14330            .ok()
14331        }
14332    }
14333}
14334#[repr(C)]
14335#[doc(hidden)]
14336pub struct ICoreWebView2Environment10_Vtbl {
14337    pub base__: ICoreWebView2Environment9_Vtbl,
14338    pub CreateCoreWebView2ControllerOptions: unsafe extern "system" fn(
14339        *mut core::ffi::c_void,
14340        *mut *mut core::ffi::c_void,
14341    )
14342        -> windows_core::HRESULT,
14343    pub CreateCoreWebView2ControllerWithOptions: unsafe extern "system" fn(
14344        *mut core::ffi::c_void,
14345        windows::Win32::Foundation::HWND,
14346        *mut core::ffi::c_void,
14347        *mut core::ffi::c_void,
14348    )
14349        -> windows_core::HRESULT,
14350    pub CreateCoreWebView2CompositionControllerWithOptions:
14351        unsafe extern "system" fn(
14352            *mut core::ffi::c_void,
14353            windows::Win32::Foundation::HWND,
14354            *mut core::ffi::c_void,
14355            *mut core::ffi::c_void,
14356        ) -> windows_core::HRESULT,
14357}
14358pub trait ICoreWebView2Environment10_Impl: ICoreWebView2Environment9_Impl {
14359    fn CreateCoreWebView2ControllerOptions(
14360        &self,
14361    ) -> windows_core::Result<ICoreWebView2ControllerOptions>;
14362    fn CreateCoreWebView2ControllerWithOptions(
14363        &self,
14364        parentwindow: windows::Win32::Foundation::HWND,
14365        options: windows_core::Ref<'_, ICoreWebView2ControllerOptions>,
14366        handler: windows_core::Ref<'_, ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>,
14367    ) -> windows_core::Result<()>;
14368    fn CreateCoreWebView2CompositionControllerWithOptions(
14369        &self,
14370        parentwindow: windows::Win32::Foundation::HWND,
14371        options: windows_core::Ref<'_, ICoreWebView2ControllerOptions>,
14372        handler: windows_core::Ref<
14373            '_,
14374            ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler,
14375        >,
14376    ) -> windows_core::Result<()>;
14377}
14378impl ICoreWebView2Environment10_Vtbl {
14379    pub const fn new<Identity: ICoreWebView2Environment10_Impl, const OFFSET: isize>() -> Self {
14380        unsafe extern "system" fn CreateCoreWebView2ControllerOptions<
14381            Identity: ICoreWebView2Environment10_Impl,
14382            const OFFSET: isize,
14383        >(
14384            this: *mut core::ffi::c_void,
14385            value: *mut *mut core::ffi::c_void,
14386        ) -> windows_core::HRESULT {
14387            unsafe {
14388                let this: &Identity =
14389                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14390                match ICoreWebView2Environment10_Impl::CreateCoreWebView2ControllerOptions(this) {
14391                    Ok(ok__) => {
14392                        value.write(core::mem::transmute(ok__));
14393                        windows_core::HRESULT(0)
14394                    }
14395                    Err(err) => err.into(),
14396                }
14397            }
14398        }
14399        unsafe extern "system" fn CreateCoreWebView2ControllerWithOptions<
14400            Identity: ICoreWebView2Environment10_Impl,
14401            const OFFSET: isize,
14402        >(
14403            this: *mut core::ffi::c_void,
14404            parentwindow: windows::Win32::Foundation::HWND,
14405            options: *mut core::ffi::c_void,
14406            handler: *mut core::ffi::c_void,
14407        ) -> windows_core::HRESULT {
14408            unsafe {
14409                let this: &Identity =
14410                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14411                ICoreWebView2Environment10_Impl::CreateCoreWebView2ControllerWithOptions(
14412                    this,
14413                    core::mem::transmute_copy(&parentwindow),
14414                    core::mem::transmute_copy(&options),
14415                    core::mem::transmute_copy(&handler),
14416                )
14417                .into()
14418            }
14419        }
14420        unsafe extern "system" fn CreateCoreWebView2CompositionControllerWithOptions<
14421            Identity: ICoreWebView2Environment10_Impl,
14422            const OFFSET: isize,
14423        >(
14424            this: *mut core::ffi::c_void,
14425            parentwindow: windows::Win32::Foundation::HWND,
14426            options: *mut core::ffi::c_void,
14427            handler: *mut core::ffi::c_void,
14428        ) -> windows_core::HRESULT {
14429            unsafe {
14430                let this: &Identity =
14431                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14432                ICoreWebView2Environment10_Impl::CreateCoreWebView2CompositionControllerWithOptions(
14433                    this,
14434                    core::mem::transmute_copy(&parentwindow),
14435                    core::mem::transmute_copy(&options),
14436                    core::mem::transmute_copy(&handler),
14437                )
14438                .into()
14439            }
14440        }
14441        Self {
14442            base__: ICoreWebView2Environment9_Vtbl::new::<Identity, OFFSET>(),
14443            CreateCoreWebView2ControllerOptions: CreateCoreWebView2ControllerOptions::<
14444                Identity,
14445                OFFSET,
14446            >,
14447            CreateCoreWebView2ControllerWithOptions: CreateCoreWebView2ControllerWithOptions::<
14448                Identity,
14449                OFFSET,
14450            >,
14451            CreateCoreWebView2CompositionControllerWithOptions:
14452                CreateCoreWebView2CompositionControllerWithOptions::<Identity, OFFSET>,
14453        }
14454    }
14455    pub fn matches(iid: &windows_core::GUID) -> bool {
14456        iid == &<ICoreWebView2Environment10 as windows_core::Interface>::IID
14457            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
14458            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
14459            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
14460            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
14461            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
14462            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
14463            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
14464            || iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
14465            || iid == &<ICoreWebView2Environment9 as windows_core::Interface>::IID
14466    }
14467}
14468impl windows_core::RuntimeName for ICoreWebView2Environment10 {}
14469windows_core::imp::define_interface!(
14470    ICoreWebView2Environment11,
14471    ICoreWebView2Environment11_Vtbl,
14472    0xf0913dc6_a0ec_42ef_9805_91dff3a2966a
14473);
14474impl core::ops::Deref for ICoreWebView2Environment11 {
14475    type Target = ICoreWebView2Environment10;
14476    fn deref(&self) -> &Self::Target {
14477        unsafe { core::mem::transmute(self) }
14478    }
14479}
14480windows_core::imp::interface_hierarchy!(
14481    ICoreWebView2Environment11,
14482    windows_core::IUnknown,
14483    ICoreWebView2Environment,
14484    ICoreWebView2Environment2,
14485    ICoreWebView2Environment3,
14486    ICoreWebView2Environment4,
14487    ICoreWebView2Environment5,
14488    ICoreWebView2Environment6,
14489    ICoreWebView2Environment7,
14490    ICoreWebView2Environment8,
14491    ICoreWebView2Environment9,
14492    ICoreWebView2Environment10
14493);
14494impl ICoreWebView2Environment11 {
14495    pub unsafe fn FailureReportFolderPath(
14496        &self,
14497        value: *mut windows_core::PWSTR,
14498    ) -> windows_core::Result<()> {
14499        unsafe {
14500            (windows_core::Interface::vtable(self).FailureReportFolderPath)(
14501                windows_core::Interface::as_raw(self),
14502                value as _,
14503            )
14504            .ok()
14505        }
14506    }
14507}
14508#[repr(C)]
14509#[doc(hidden)]
14510pub struct ICoreWebView2Environment11_Vtbl {
14511    pub base__: ICoreWebView2Environment10_Vtbl,
14512    pub FailureReportFolderPath: unsafe extern "system" fn(
14513        *mut core::ffi::c_void,
14514        *mut windows_core::PWSTR,
14515    ) -> windows_core::HRESULT,
14516}
14517pub trait ICoreWebView2Environment11_Impl: ICoreWebView2Environment10_Impl {
14518    fn FailureReportFolderPath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
14519}
14520impl ICoreWebView2Environment11_Vtbl {
14521    pub const fn new<Identity: ICoreWebView2Environment11_Impl, const OFFSET: isize>() -> Self {
14522        unsafe extern "system" fn FailureReportFolderPath<
14523            Identity: ICoreWebView2Environment11_Impl,
14524            const OFFSET: isize,
14525        >(
14526            this: *mut core::ffi::c_void,
14527            value: *mut windows_core::PWSTR,
14528        ) -> windows_core::HRESULT {
14529            unsafe {
14530                let this: &Identity =
14531                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14532                ICoreWebView2Environment11_Impl::FailureReportFolderPath(
14533                    this,
14534                    core::mem::transmute_copy(&value),
14535                )
14536                .into()
14537            }
14538        }
14539        Self {
14540            base__: ICoreWebView2Environment10_Vtbl::new::<Identity, OFFSET>(),
14541            FailureReportFolderPath: FailureReportFolderPath::<Identity, OFFSET>,
14542        }
14543    }
14544    pub fn matches(iid: &windows_core::GUID) -> bool {
14545        iid == &<ICoreWebView2Environment11 as windows_core::Interface>::IID
14546            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
14547            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
14548            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
14549            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
14550            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
14551            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
14552            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
14553            || iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
14554            || iid == &<ICoreWebView2Environment9 as windows_core::Interface>::IID
14555            || iid == &<ICoreWebView2Environment10 as windows_core::Interface>::IID
14556    }
14557}
14558impl windows_core::RuntimeName for ICoreWebView2Environment11 {}
14559windows_core::imp::define_interface!(
14560    ICoreWebView2Environment12,
14561    ICoreWebView2Environment12_Vtbl,
14562    0xf503db9b_739f_48dd_b151_fdfcf253f54e
14563);
14564impl core::ops::Deref for ICoreWebView2Environment12 {
14565    type Target = ICoreWebView2Environment11;
14566    fn deref(&self) -> &Self::Target {
14567        unsafe { core::mem::transmute(self) }
14568    }
14569}
14570windows_core::imp::interface_hierarchy!(
14571    ICoreWebView2Environment12,
14572    windows_core::IUnknown,
14573    ICoreWebView2Environment,
14574    ICoreWebView2Environment2,
14575    ICoreWebView2Environment3,
14576    ICoreWebView2Environment4,
14577    ICoreWebView2Environment5,
14578    ICoreWebView2Environment6,
14579    ICoreWebView2Environment7,
14580    ICoreWebView2Environment8,
14581    ICoreWebView2Environment9,
14582    ICoreWebView2Environment10,
14583    ICoreWebView2Environment11
14584);
14585impl ICoreWebView2Environment12 {
14586    pub unsafe fn CreateSharedBuffer(
14587        &self,
14588        size: u64,
14589    ) -> windows_core::Result<ICoreWebView2SharedBuffer> {
14590        unsafe {
14591            let mut result__ = core::mem::zeroed();
14592            (windows_core::Interface::vtable(self).CreateSharedBuffer)(
14593                windows_core::Interface::as_raw(self),
14594                size,
14595                &mut result__,
14596            )
14597            .and_then(|| windows_core::Type::from_abi(result__))
14598        }
14599    }
14600}
14601#[repr(C)]
14602#[doc(hidden)]
14603pub struct ICoreWebView2Environment12_Vtbl {
14604    pub base__: ICoreWebView2Environment11_Vtbl,
14605    pub CreateSharedBuffer: unsafe extern "system" fn(
14606        *mut core::ffi::c_void,
14607        u64,
14608        *mut *mut core::ffi::c_void,
14609    ) -> windows_core::HRESULT,
14610}
14611pub trait ICoreWebView2Environment12_Impl: ICoreWebView2Environment11_Impl {
14612    fn CreateSharedBuffer(&self, size: u64) -> windows_core::Result<ICoreWebView2SharedBuffer>;
14613}
14614impl ICoreWebView2Environment12_Vtbl {
14615    pub const fn new<Identity: ICoreWebView2Environment12_Impl, const OFFSET: isize>() -> Self {
14616        unsafe extern "system" fn CreateSharedBuffer<
14617            Identity: ICoreWebView2Environment12_Impl,
14618            const OFFSET: isize,
14619        >(
14620            this: *mut core::ffi::c_void,
14621            size: u64,
14622            value: *mut *mut core::ffi::c_void,
14623        ) -> windows_core::HRESULT {
14624            unsafe {
14625                let this: &Identity =
14626                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14627                match ICoreWebView2Environment12_Impl::CreateSharedBuffer(
14628                    this,
14629                    core::mem::transmute_copy(&size),
14630                ) {
14631                    Ok(ok__) => {
14632                        value.write(core::mem::transmute(ok__));
14633                        windows_core::HRESULT(0)
14634                    }
14635                    Err(err) => err.into(),
14636                }
14637            }
14638        }
14639        Self {
14640            base__: ICoreWebView2Environment11_Vtbl::new::<Identity, OFFSET>(),
14641            CreateSharedBuffer: CreateSharedBuffer::<Identity, OFFSET>,
14642        }
14643    }
14644    pub fn matches(iid: &windows_core::GUID) -> bool {
14645        iid == &<ICoreWebView2Environment12 as windows_core::Interface>::IID
14646            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
14647            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
14648            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
14649            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
14650            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
14651            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
14652            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
14653            || iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
14654            || iid == &<ICoreWebView2Environment9 as windows_core::Interface>::IID
14655            || iid == &<ICoreWebView2Environment10 as windows_core::Interface>::IID
14656            || iid == &<ICoreWebView2Environment11 as windows_core::Interface>::IID
14657    }
14658}
14659impl windows_core::RuntimeName for ICoreWebView2Environment12 {}
14660windows_core::imp::define_interface!(
14661    ICoreWebView2Environment13,
14662    ICoreWebView2Environment13_Vtbl,
14663    0xaf641f58_72b2_11ee_b962_0242ac120002
14664);
14665impl core::ops::Deref for ICoreWebView2Environment13 {
14666    type Target = ICoreWebView2Environment12;
14667    fn deref(&self) -> &Self::Target {
14668        unsafe { core::mem::transmute(self) }
14669    }
14670}
14671windows_core::imp::interface_hierarchy!(
14672    ICoreWebView2Environment13,
14673    windows_core::IUnknown,
14674    ICoreWebView2Environment,
14675    ICoreWebView2Environment2,
14676    ICoreWebView2Environment3,
14677    ICoreWebView2Environment4,
14678    ICoreWebView2Environment5,
14679    ICoreWebView2Environment6,
14680    ICoreWebView2Environment7,
14681    ICoreWebView2Environment8,
14682    ICoreWebView2Environment9,
14683    ICoreWebView2Environment10,
14684    ICoreWebView2Environment11,
14685    ICoreWebView2Environment12
14686);
14687impl ICoreWebView2Environment13 {
14688    pub unsafe fn GetProcessExtendedInfos<P0>(&self, handler: P0) -> windows_core::Result<()>
14689    where
14690        P0: windows_core::Param<ICoreWebView2GetProcessExtendedInfosCompletedHandler>,
14691    {
14692        unsafe {
14693            (windows_core::Interface::vtable(self).GetProcessExtendedInfos)(
14694                windows_core::Interface::as_raw(self),
14695                handler.param().abi(),
14696            )
14697            .ok()
14698        }
14699    }
14700}
14701#[repr(C)]
14702#[doc(hidden)]
14703pub struct ICoreWebView2Environment13_Vtbl {
14704    pub base__: ICoreWebView2Environment12_Vtbl,
14705    pub GetProcessExtendedInfos: unsafe extern "system" fn(
14706        *mut core::ffi::c_void,
14707        *mut core::ffi::c_void,
14708    ) -> windows_core::HRESULT,
14709}
14710pub trait ICoreWebView2Environment13_Impl: ICoreWebView2Environment12_Impl {
14711    fn GetProcessExtendedInfos(
14712        &self,
14713        handler: windows_core::Ref<'_, ICoreWebView2GetProcessExtendedInfosCompletedHandler>,
14714    ) -> windows_core::Result<()>;
14715}
14716impl ICoreWebView2Environment13_Vtbl {
14717    pub const fn new<Identity: ICoreWebView2Environment13_Impl, const OFFSET: isize>() -> Self {
14718        unsafe extern "system" fn GetProcessExtendedInfos<
14719            Identity: ICoreWebView2Environment13_Impl,
14720            const OFFSET: isize,
14721        >(
14722            this: *mut core::ffi::c_void,
14723            handler: *mut core::ffi::c_void,
14724        ) -> windows_core::HRESULT {
14725            unsafe {
14726                let this: &Identity =
14727                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14728                ICoreWebView2Environment13_Impl::GetProcessExtendedInfos(
14729                    this,
14730                    core::mem::transmute_copy(&handler),
14731                )
14732                .into()
14733            }
14734        }
14735        Self {
14736            base__: ICoreWebView2Environment12_Vtbl::new::<Identity, OFFSET>(),
14737            GetProcessExtendedInfos: GetProcessExtendedInfos::<Identity, OFFSET>,
14738        }
14739    }
14740    pub fn matches(iid: &windows_core::GUID) -> bool {
14741        iid == &<ICoreWebView2Environment13 as windows_core::Interface>::IID
14742            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
14743            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
14744            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
14745            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
14746            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
14747            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
14748            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
14749            || iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
14750            || iid == &<ICoreWebView2Environment9 as windows_core::Interface>::IID
14751            || iid == &<ICoreWebView2Environment10 as windows_core::Interface>::IID
14752            || iid == &<ICoreWebView2Environment11 as windows_core::Interface>::IID
14753            || iid == &<ICoreWebView2Environment12 as windows_core::Interface>::IID
14754    }
14755}
14756impl windows_core::RuntimeName for ICoreWebView2Environment13 {}
14757windows_core::imp::define_interface!(
14758    ICoreWebView2Environment14,
14759    ICoreWebView2Environment14_Vtbl,
14760    0xa5e9fad9_c875_59da_9bd7_473aa5ca1cef
14761);
14762impl core::ops::Deref for ICoreWebView2Environment14 {
14763    type Target = ICoreWebView2Environment13;
14764    fn deref(&self) -> &Self::Target {
14765        unsafe { core::mem::transmute(self) }
14766    }
14767}
14768windows_core::imp::interface_hierarchy!(
14769    ICoreWebView2Environment14,
14770    windows_core::IUnknown,
14771    ICoreWebView2Environment,
14772    ICoreWebView2Environment2,
14773    ICoreWebView2Environment3,
14774    ICoreWebView2Environment4,
14775    ICoreWebView2Environment5,
14776    ICoreWebView2Environment6,
14777    ICoreWebView2Environment7,
14778    ICoreWebView2Environment8,
14779    ICoreWebView2Environment9,
14780    ICoreWebView2Environment10,
14781    ICoreWebView2Environment11,
14782    ICoreWebView2Environment12,
14783    ICoreWebView2Environment13
14784);
14785impl ICoreWebView2Environment14 {
14786    pub unsafe fn CreateWebFileSystemFileHandle<P0>(
14787        &self,
14788        path: P0,
14789        permission: COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14790    ) -> windows_core::Result<ICoreWebView2FileSystemHandle>
14791    where
14792        P0: windows_core::Param<windows_core::PCWSTR>,
14793    {
14794        unsafe {
14795            let mut result__ = core::mem::zeroed();
14796            (windows_core::Interface::vtable(self).CreateWebFileSystemFileHandle)(
14797                windows_core::Interface::as_raw(self),
14798                path.param().abi(),
14799                permission,
14800                &mut result__,
14801            )
14802            .and_then(|| windows_core::Type::from_abi(result__))
14803        }
14804    }
14805    pub unsafe fn CreateWebFileSystemDirectoryHandle<P0>(
14806        &self,
14807        path: P0,
14808        permission: COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14809    ) -> windows_core::Result<ICoreWebView2FileSystemHandle>
14810    where
14811        P0: windows_core::Param<windows_core::PCWSTR>,
14812    {
14813        unsafe {
14814            let mut result__ = core::mem::zeroed();
14815            (windows_core::Interface::vtable(self).CreateWebFileSystemDirectoryHandle)(
14816                windows_core::Interface::as_raw(self),
14817                path.param().abi(),
14818                permission,
14819                &mut result__,
14820            )
14821            .and_then(|| windows_core::Type::from_abi(result__))
14822        }
14823    }
14824    pub unsafe fn CreateObjectCollection(
14825        &self,
14826        length: u32,
14827        items: *mut Option<windows_core::IUnknown>,
14828        objectcollection: *mut Option<ICoreWebView2ObjectCollection>,
14829    ) -> windows_core::Result<()> {
14830        unsafe {
14831            (windows_core::Interface::vtable(self).CreateObjectCollection)(
14832                windows_core::Interface::as_raw(self),
14833                length,
14834                core::mem::transmute(items),
14835                core::mem::transmute(objectcollection),
14836            )
14837            .ok()
14838        }
14839    }
14840}
14841#[repr(C)]
14842#[doc(hidden)]
14843pub struct ICoreWebView2Environment14_Vtbl {
14844    pub base__: ICoreWebView2Environment13_Vtbl,
14845    pub CreateWebFileSystemFileHandle: unsafe extern "system" fn(
14846        *mut core::ffi::c_void,
14847        windows_core::PCWSTR,
14848        COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14849        *mut *mut core::ffi::c_void,
14850    ) -> windows_core::HRESULT,
14851    pub CreateWebFileSystemDirectoryHandle: unsafe extern "system" fn(
14852        *mut core::ffi::c_void,
14853        windows_core::PCWSTR,
14854        COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14855        *mut *mut core::ffi::c_void,
14856    ) -> windows_core::HRESULT,
14857    pub CreateObjectCollection: unsafe extern "system" fn(
14858        *mut core::ffi::c_void,
14859        u32,
14860        *mut *mut core::ffi::c_void,
14861        *mut *mut core::ffi::c_void,
14862    ) -> windows_core::HRESULT,
14863}
14864pub trait ICoreWebView2Environment14_Impl: ICoreWebView2Environment13_Impl {
14865    fn CreateWebFileSystemFileHandle(
14866        &self,
14867        path: &windows_core::PCWSTR,
14868        permission: COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14869    ) -> windows_core::Result<ICoreWebView2FileSystemHandle>;
14870    fn CreateWebFileSystemDirectoryHandle(
14871        &self,
14872        path: &windows_core::PCWSTR,
14873        permission: COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14874    ) -> windows_core::Result<ICoreWebView2FileSystemHandle>;
14875    fn CreateObjectCollection(
14876        &self,
14877        length: u32,
14878        items: windows_core::OutRef<'_, windows_core::IUnknown>,
14879        objectcollection: windows_core::OutRef<'_, ICoreWebView2ObjectCollection>,
14880    ) -> windows_core::Result<()>;
14881}
14882impl ICoreWebView2Environment14_Vtbl {
14883    pub const fn new<Identity: ICoreWebView2Environment14_Impl, const OFFSET: isize>() -> Self {
14884        unsafe extern "system" fn CreateWebFileSystemFileHandle<
14885            Identity: ICoreWebView2Environment14_Impl,
14886            const OFFSET: isize,
14887        >(
14888            this: *mut core::ffi::c_void,
14889            path: windows_core::PCWSTR,
14890            permission: COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14891            value: *mut *mut core::ffi::c_void,
14892        ) -> windows_core::HRESULT {
14893            unsafe {
14894                let this: &Identity =
14895                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14896                match ICoreWebView2Environment14_Impl::CreateWebFileSystemFileHandle(
14897                    this,
14898                    core::mem::transmute(&path),
14899                    core::mem::transmute_copy(&permission),
14900                ) {
14901                    Ok(ok__) => {
14902                        value.write(core::mem::transmute(ok__));
14903                        windows_core::HRESULT(0)
14904                    }
14905                    Err(err) => err.into(),
14906                }
14907            }
14908        }
14909        unsafe extern "system" fn CreateWebFileSystemDirectoryHandle<
14910            Identity: ICoreWebView2Environment14_Impl,
14911            const OFFSET: isize,
14912        >(
14913            this: *mut core::ffi::c_void,
14914            path: windows_core::PCWSTR,
14915            permission: COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
14916            value: *mut *mut core::ffi::c_void,
14917        ) -> windows_core::HRESULT {
14918            unsafe {
14919                let this: &Identity =
14920                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14921                match ICoreWebView2Environment14_Impl::CreateWebFileSystemDirectoryHandle(
14922                    this,
14923                    core::mem::transmute(&path),
14924                    core::mem::transmute_copy(&permission),
14925                ) {
14926                    Ok(ok__) => {
14927                        value.write(core::mem::transmute(ok__));
14928                        windows_core::HRESULT(0)
14929                    }
14930                    Err(err) => err.into(),
14931                }
14932            }
14933        }
14934        unsafe extern "system" fn CreateObjectCollection<
14935            Identity: ICoreWebView2Environment14_Impl,
14936            const OFFSET: isize,
14937        >(
14938            this: *mut core::ffi::c_void,
14939            length: u32,
14940            items: *mut *mut core::ffi::c_void,
14941            objectcollection: *mut *mut core::ffi::c_void,
14942        ) -> windows_core::HRESULT {
14943            unsafe {
14944                let this: &Identity =
14945                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14946                ICoreWebView2Environment14_Impl::CreateObjectCollection(
14947                    this,
14948                    core::mem::transmute_copy(&length),
14949                    core::mem::transmute_copy(&items),
14950                    core::mem::transmute_copy(&objectcollection),
14951                )
14952                .into()
14953            }
14954        }
14955        Self {
14956            base__: ICoreWebView2Environment13_Vtbl::new::<Identity, OFFSET>(),
14957            CreateWebFileSystemFileHandle: CreateWebFileSystemFileHandle::<Identity, OFFSET>,
14958            CreateWebFileSystemDirectoryHandle: CreateWebFileSystemDirectoryHandle::<
14959                Identity,
14960                OFFSET,
14961            >,
14962            CreateObjectCollection: CreateObjectCollection::<Identity, OFFSET>,
14963        }
14964    }
14965    pub fn matches(iid: &windows_core::GUID) -> bool {
14966        iid == &<ICoreWebView2Environment14 as windows_core::Interface>::IID
14967            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
14968            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
14969            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
14970            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
14971            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
14972            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
14973            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
14974            || iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
14975            || iid == &<ICoreWebView2Environment9 as windows_core::Interface>::IID
14976            || iid == &<ICoreWebView2Environment10 as windows_core::Interface>::IID
14977            || iid == &<ICoreWebView2Environment11 as windows_core::Interface>::IID
14978            || iid == &<ICoreWebView2Environment12 as windows_core::Interface>::IID
14979            || iid == &<ICoreWebView2Environment13 as windows_core::Interface>::IID
14980    }
14981}
14982impl windows_core::RuntimeName for ICoreWebView2Environment14 {}
14983windows_core::imp::define_interface!(
14984    ICoreWebView2Environment2,
14985    ICoreWebView2Environment2_Vtbl,
14986    0x41f3632b_5ef4_404f_ad82_2d606c5a9a21
14987);
14988impl core::ops::Deref for ICoreWebView2Environment2 {
14989    type Target = ICoreWebView2Environment;
14990    fn deref(&self) -> &Self::Target {
14991        unsafe { core::mem::transmute(self) }
14992    }
14993}
14994windows_core::imp::interface_hierarchy!(
14995    ICoreWebView2Environment2,
14996    windows_core::IUnknown,
14997    ICoreWebView2Environment
14998);
14999impl ICoreWebView2Environment2 {
15000    pub unsafe fn CreateWebResourceRequest<P0, P1, P2, P3>(
15001        &self,
15002        uri: P0,
15003        method: P1,
15004        postdata: P2,
15005        headers: P3,
15006    ) -> windows_core::Result<ICoreWebView2WebResourceRequest>
15007    where
15008        P0: windows_core::Param<windows_core::PCWSTR>,
15009        P1: windows_core::Param<windows_core::PCWSTR>,
15010        P2: windows_core::Param<windows::Win32::System::Com::IStream>,
15011        P3: windows_core::Param<windows_core::PCWSTR>,
15012    {
15013        unsafe {
15014            let mut result__ = core::mem::zeroed();
15015            (windows_core::Interface::vtable(self).CreateWebResourceRequest)(
15016                windows_core::Interface::as_raw(self),
15017                uri.param().abi(),
15018                method.param().abi(),
15019                postdata.param().abi(),
15020                headers.param().abi(),
15021                &mut result__,
15022            )
15023            .and_then(|| windows_core::Type::from_abi(result__))
15024        }
15025    }
15026}
15027#[repr(C)]
15028#[doc(hidden)]
15029pub struct ICoreWebView2Environment2_Vtbl {
15030    pub base__: ICoreWebView2Environment_Vtbl,
15031    pub CreateWebResourceRequest: unsafe extern "system" fn(
15032        *mut core::ffi::c_void,
15033        windows_core::PCWSTR,
15034        windows_core::PCWSTR,
15035        *mut core::ffi::c_void,
15036        windows_core::PCWSTR,
15037        *mut *mut core::ffi::c_void,
15038    ) -> windows_core::HRESULT,
15039}
15040pub trait ICoreWebView2Environment2_Impl: ICoreWebView2Environment_Impl {
15041    fn CreateWebResourceRequest(
15042        &self,
15043        uri: &windows_core::PCWSTR,
15044        method: &windows_core::PCWSTR,
15045        postdata: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
15046        headers: &windows_core::PCWSTR,
15047    ) -> windows_core::Result<ICoreWebView2WebResourceRequest>;
15048}
15049impl ICoreWebView2Environment2_Vtbl {
15050    pub const fn new<Identity: ICoreWebView2Environment2_Impl, const OFFSET: isize>() -> Self {
15051        unsafe extern "system" fn CreateWebResourceRequest<
15052            Identity: ICoreWebView2Environment2_Impl,
15053            const OFFSET: isize,
15054        >(
15055            this: *mut core::ffi::c_void,
15056            uri: windows_core::PCWSTR,
15057            method: windows_core::PCWSTR,
15058            postdata: *mut core::ffi::c_void,
15059            headers: windows_core::PCWSTR,
15060            value: *mut *mut core::ffi::c_void,
15061        ) -> windows_core::HRESULT {
15062            unsafe {
15063                let this: &Identity =
15064                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15065                match ICoreWebView2Environment2_Impl::CreateWebResourceRequest(
15066                    this,
15067                    core::mem::transmute(&uri),
15068                    core::mem::transmute(&method),
15069                    core::mem::transmute_copy(&postdata),
15070                    core::mem::transmute(&headers),
15071                ) {
15072                    Ok(ok__) => {
15073                        value.write(core::mem::transmute(ok__));
15074                        windows_core::HRESULT(0)
15075                    }
15076                    Err(err) => err.into(),
15077                }
15078            }
15079        }
15080        Self {
15081            base__: ICoreWebView2Environment_Vtbl::new::<Identity, OFFSET>(),
15082            CreateWebResourceRequest: CreateWebResourceRequest::<Identity, OFFSET>,
15083        }
15084    }
15085    pub fn matches(iid: &windows_core::GUID) -> bool {
15086        iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15087            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15088    }
15089}
15090impl windows_core::RuntimeName for ICoreWebView2Environment2 {}
15091windows_core::imp::define_interface!(
15092    ICoreWebView2Environment3,
15093    ICoreWebView2Environment3_Vtbl,
15094    0x80a22ae3_be7c_4ce2_afe1_5a50056cdeeb
15095);
15096impl core::ops::Deref for ICoreWebView2Environment3 {
15097    type Target = ICoreWebView2Environment2;
15098    fn deref(&self) -> &Self::Target {
15099        unsafe { core::mem::transmute(self) }
15100    }
15101}
15102windows_core::imp::interface_hierarchy!(
15103    ICoreWebView2Environment3,
15104    windows_core::IUnknown,
15105    ICoreWebView2Environment,
15106    ICoreWebView2Environment2
15107);
15108impl ICoreWebView2Environment3 {
15109    pub unsafe fn CreateCoreWebView2CompositionController<P1>(
15110        &self,
15111        parentwindow: windows::Win32::Foundation::HWND,
15112        handler: P1,
15113    ) -> windows_core::Result<()>
15114    where
15115        P1: windows_core::Param<
15116            ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler,
15117        >,
15118    {
15119        unsafe {
15120            (windows_core::Interface::vtable(self).CreateCoreWebView2CompositionController)(
15121                windows_core::Interface::as_raw(self),
15122                parentwindow,
15123                handler.param().abi(),
15124            )
15125            .ok()
15126        }
15127    }
15128    pub unsafe fn CreateCoreWebView2PointerInfo(
15129        &self,
15130    ) -> windows_core::Result<ICoreWebView2PointerInfo> {
15131        unsafe {
15132            let mut result__ = core::mem::zeroed();
15133            (windows_core::Interface::vtable(self).CreateCoreWebView2PointerInfo)(
15134                windows_core::Interface::as_raw(self),
15135                &mut result__,
15136            )
15137            .and_then(|| windows_core::Type::from_abi(result__))
15138        }
15139    }
15140}
15141#[repr(C)]
15142#[doc(hidden)]
15143pub struct ICoreWebView2Environment3_Vtbl {
15144    pub base__: ICoreWebView2Environment2_Vtbl,
15145    pub CreateCoreWebView2CompositionController: unsafe extern "system" fn(
15146        *mut core::ffi::c_void,
15147        windows::Win32::Foundation::HWND,
15148        *mut core::ffi::c_void,
15149    )
15150        -> windows_core::HRESULT,
15151    pub CreateCoreWebView2PointerInfo: unsafe extern "system" fn(
15152        *mut core::ffi::c_void,
15153        *mut *mut core::ffi::c_void,
15154    ) -> windows_core::HRESULT,
15155}
15156pub trait ICoreWebView2Environment3_Impl: ICoreWebView2Environment2_Impl {
15157    fn CreateCoreWebView2CompositionController(
15158        &self,
15159        parentwindow: windows::Win32::Foundation::HWND,
15160        handler: windows_core::Ref<
15161            '_,
15162            ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler,
15163        >,
15164    ) -> windows_core::Result<()>;
15165    fn CreateCoreWebView2PointerInfo(&self) -> windows_core::Result<ICoreWebView2PointerInfo>;
15166}
15167impl ICoreWebView2Environment3_Vtbl {
15168    pub const fn new<Identity: ICoreWebView2Environment3_Impl, const OFFSET: isize>() -> Self {
15169        unsafe extern "system" fn CreateCoreWebView2CompositionController<
15170            Identity: ICoreWebView2Environment3_Impl,
15171            const OFFSET: isize,
15172        >(
15173            this: *mut core::ffi::c_void,
15174            parentwindow: windows::Win32::Foundation::HWND,
15175            handler: *mut core::ffi::c_void,
15176        ) -> windows_core::HRESULT {
15177            unsafe {
15178                let this: &Identity =
15179                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15180                ICoreWebView2Environment3_Impl::CreateCoreWebView2CompositionController(
15181                    this,
15182                    core::mem::transmute_copy(&parentwindow),
15183                    core::mem::transmute_copy(&handler),
15184                )
15185                .into()
15186            }
15187        }
15188        unsafe extern "system" fn CreateCoreWebView2PointerInfo<
15189            Identity: ICoreWebView2Environment3_Impl,
15190            const OFFSET: isize,
15191        >(
15192            this: *mut core::ffi::c_void,
15193            value: *mut *mut core::ffi::c_void,
15194        ) -> windows_core::HRESULT {
15195            unsafe {
15196                let this: &Identity =
15197                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15198                match ICoreWebView2Environment3_Impl::CreateCoreWebView2PointerInfo(this) {
15199                    Ok(ok__) => {
15200                        value.write(core::mem::transmute(ok__));
15201                        windows_core::HRESULT(0)
15202                    }
15203                    Err(err) => err.into(),
15204                }
15205            }
15206        }
15207        Self {
15208            base__: ICoreWebView2Environment2_Vtbl::new::<Identity, OFFSET>(),
15209            CreateCoreWebView2CompositionController: CreateCoreWebView2CompositionController::<
15210                Identity,
15211                OFFSET,
15212            >,
15213            CreateCoreWebView2PointerInfo: CreateCoreWebView2PointerInfo::<Identity, OFFSET>,
15214        }
15215    }
15216    pub fn matches(iid: &windows_core::GUID) -> bool {
15217        iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15218            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15219            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15220    }
15221}
15222impl windows_core::RuntimeName for ICoreWebView2Environment3 {}
15223windows_core::imp::define_interface!(
15224    ICoreWebView2Environment4,
15225    ICoreWebView2Environment4_Vtbl,
15226    0x20944379_6dcf_41d6_a0a0_abc0fc50de0d
15227);
15228impl core::ops::Deref for ICoreWebView2Environment4 {
15229    type Target = ICoreWebView2Environment3;
15230    fn deref(&self) -> &Self::Target {
15231        unsafe { core::mem::transmute(self) }
15232    }
15233}
15234windows_core::imp::interface_hierarchy!(
15235    ICoreWebView2Environment4,
15236    windows_core::IUnknown,
15237    ICoreWebView2Environment,
15238    ICoreWebView2Environment2,
15239    ICoreWebView2Environment3
15240);
15241impl ICoreWebView2Environment4 {
15242    pub unsafe fn GetAutomationProviderForWindow(
15243        &self,
15244        hwnd: windows::Win32::Foundation::HWND,
15245    ) -> windows_core::Result<windows_core::IUnknown> {
15246        unsafe {
15247            let mut result__ = core::mem::zeroed();
15248            (windows_core::Interface::vtable(self).GetAutomationProviderForWindow)(
15249                windows_core::Interface::as_raw(self),
15250                hwnd,
15251                &mut result__,
15252            )
15253            .and_then(|| windows_core::Type::from_abi(result__))
15254        }
15255    }
15256}
15257#[repr(C)]
15258#[doc(hidden)]
15259pub struct ICoreWebView2Environment4_Vtbl {
15260    pub base__: ICoreWebView2Environment3_Vtbl,
15261    pub GetAutomationProviderForWindow: unsafe extern "system" fn(
15262        *mut core::ffi::c_void,
15263        windows::Win32::Foundation::HWND,
15264        *mut *mut core::ffi::c_void,
15265    ) -> windows_core::HRESULT,
15266}
15267pub trait ICoreWebView2Environment4_Impl: ICoreWebView2Environment3_Impl {
15268    fn GetAutomationProviderForWindow(
15269        &self,
15270        hwnd: windows::Win32::Foundation::HWND,
15271    ) -> windows_core::Result<windows_core::IUnknown>;
15272}
15273impl ICoreWebView2Environment4_Vtbl {
15274    pub const fn new<Identity: ICoreWebView2Environment4_Impl, const OFFSET: isize>() -> Self {
15275        unsafe extern "system" fn GetAutomationProviderForWindow<
15276            Identity: ICoreWebView2Environment4_Impl,
15277            const OFFSET: isize,
15278        >(
15279            this: *mut core::ffi::c_void,
15280            hwnd: windows::Win32::Foundation::HWND,
15281            value: *mut *mut core::ffi::c_void,
15282        ) -> windows_core::HRESULT {
15283            unsafe {
15284                let this: &Identity =
15285                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15286                match ICoreWebView2Environment4_Impl::GetAutomationProviderForWindow(
15287                    this,
15288                    core::mem::transmute_copy(&hwnd),
15289                ) {
15290                    Ok(ok__) => {
15291                        value.write(core::mem::transmute(ok__));
15292                        windows_core::HRESULT(0)
15293                    }
15294                    Err(err) => err.into(),
15295                }
15296            }
15297        }
15298        Self {
15299            base__: ICoreWebView2Environment3_Vtbl::new::<Identity, OFFSET>(),
15300            GetAutomationProviderForWindow: GetAutomationProviderForWindow::<Identity, OFFSET>,
15301        }
15302    }
15303    pub fn matches(iid: &windows_core::GUID) -> bool {
15304        iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
15305            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15306            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15307            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15308    }
15309}
15310impl windows_core::RuntimeName for ICoreWebView2Environment4 {}
15311windows_core::imp::define_interface!(
15312    ICoreWebView2Environment5,
15313    ICoreWebView2Environment5_Vtbl,
15314    0x319e423d_e0d7_4b8d_9254_ae9475de9b17
15315);
15316impl core::ops::Deref for ICoreWebView2Environment5 {
15317    type Target = ICoreWebView2Environment4;
15318    fn deref(&self) -> &Self::Target {
15319        unsafe { core::mem::transmute(self) }
15320    }
15321}
15322windows_core::imp::interface_hierarchy!(
15323    ICoreWebView2Environment5,
15324    windows_core::IUnknown,
15325    ICoreWebView2Environment,
15326    ICoreWebView2Environment2,
15327    ICoreWebView2Environment3,
15328    ICoreWebView2Environment4
15329);
15330impl ICoreWebView2Environment5 {
15331    pub unsafe fn add_BrowserProcessExited<P0>(
15332        &self,
15333        eventhandler: P0,
15334        token: *mut i64,
15335    ) -> windows_core::Result<()>
15336    where
15337        P0: windows_core::Param<ICoreWebView2BrowserProcessExitedEventHandler>,
15338    {
15339        unsafe {
15340            (windows_core::Interface::vtable(self).add_BrowserProcessExited)(
15341                windows_core::Interface::as_raw(self),
15342                eventhandler.param().abi(),
15343                token as _,
15344            )
15345            .ok()
15346        }
15347    }
15348    pub unsafe fn remove_BrowserProcessExited(&self, token: i64) -> windows_core::Result<()> {
15349        unsafe {
15350            (windows_core::Interface::vtable(self).remove_BrowserProcessExited)(
15351                windows_core::Interface::as_raw(self),
15352                token,
15353            )
15354            .ok()
15355        }
15356    }
15357}
15358#[repr(C)]
15359#[doc(hidden)]
15360pub struct ICoreWebView2Environment5_Vtbl {
15361    pub base__: ICoreWebView2Environment4_Vtbl,
15362    pub add_BrowserProcessExited: unsafe extern "system" fn(
15363        *mut core::ffi::c_void,
15364        *mut core::ffi::c_void,
15365        *mut i64,
15366    ) -> windows_core::HRESULT,
15367    pub remove_BrowserProcessExited:
15368        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
15369}
15370pub trait ICoreWebView2Environment5_Impl: ICoreWebView2Environment4_Impl {
15371    fn add_BrowserProcessExited(
15372        &self,
15373        eventhandler: windows_core::Ref<'_, ICoreWebView2BrowserProcessExitedEventHandler>,
15374        token: *mut i64,
15375    ) -> windows_core::Result<()>;
15376    fn remove_BrowserProcessExited(&self, token: i64) -> windows_core::Result<()>;
15377}
15378impl ICoreWebView2Environment5_Vtbl {
15379    pub const fn new<Identity: ICoreWebView2Environment5_Impl, const OFFSET: isize>() -> Self {
15380        unsafe extern "system" fn add_BrowserProcessExited<
15381            Identity: ICoreWebView2Environment5_Impl,
15382            const OFFSET: isize,
15383        >(
15384            this: *mut core::ffi::c_void,
15385            eventhandler: *mut core::ffi::c_void,
15386            token: *mut i64,
15387        ) -> windows_core::HRESULT {
15388            unsafe {
15389                let this: &Identity =
15390                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15391                ICoreWebView2Environment5_Impl::add_BrowserProcessExited(
15392                    this,
15393                    core::mem::transmute_copy(&eventhandler),
15394                    core::mem::transmute_copy(&token),
15395                )
15396                .into()
15397            }
15398        }
15399        unsafe extern "system" fn remove_BrowserProcessExited<
15400            Identity: ICoreWebView2Environment5_Impl,
15401            const OFFSET: isize,
15402        >(
15403            this: *mut core::ffi::c_void,
15404            token: i64,
15405        ) -> windows_core::HRESULT {
15406            unsafe {
15407                let this: &Identity =
15408                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15409                ICoreWebView2Environment5_Impl::remove_BrowserProcessExited(
15410                    this,
15411                    core::mem::transmute_copy(&token),
15412                )
15413                .into()
15414            }
15415        }
15416        Self {
15417            base__: ICoreWebView2Environment4_Vtbl::new::<Identity, OFFSET>(),
15418            add_BrowserProcessExited: add_BrowserProcessExited::<Identity, OFFSET>,
15419            remove_BrowserProcessExited: remove_BrowserProcessExited::<Identity, OFFSET>,
15420        }
15421    }
15422    pub fn matches(iid: &windows_core::GUID) -> bool {
15423        iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
15424            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15425            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15426            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15427            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
15428    }
15429}
15430impl windows_core::RuntimeName for ICoreWebView2Environment5 {}
15431windows_core::imp::define_interface!(
15432    ICoreWebView2Environment6,
15433    ICoreWebView2Environment6_Vtbl,
15434    0xe59ee362_acbd_4857_9a8e_d3644d9459a9
15435);
15436impl core::ops::Deref for ICoreWebView2Environment6 {
15437    type Target = ICoreWebView2Environment5;
15438    fn deref(&self) -> &Self::Target {
15439        unsafe { core::mem::transmute(self) }
15440    }
15441}
15442windows_core::imp::interface_hierarchy!(
15443    ICoreWebView2Environment6,
15444    windows_core::IUnknown,
15445    ICoreWebView2Environment,
15446    ICoreWebView2Environment2,
15447    ICoreWebView2Environment3,
15448    ICoreWebView2Environment4,
15449    ICoreWebView2Environment5
15450);
15451impl ICoreWebView2Environment6 {
15452    pub unsafe fn CreatePrintSettings(&self) -> windows_core::Result<ICoreWebView2PrintSettings> {
15453        unsafe {
15454            let mut result__ = core::mem::zeroed();
15455            (windows_core::Interface::vtable(self).CreatePrintSettings)(
15456                windows_core::Interface::as_raw(self),
15457                &mut result__,
15458            )
15459            .and_then(|| windows_core::Type::from_abi(result__))
15460        }
15461    }
15462}
15463#[repr(C)]
15464#[doc(hidden)]
15465pub struct ICoreWebView2Environment6_Vtbl {
15466    pub base__: ICoreWebView2Environment5_Vtbl,
15467    pub CreatePrintSettings: unsafe extern "system" fn(
15468        *mut core::ffi::c_void,
15469        *mut *mut core::ffi::c_void,
15470    ) -> windows_core::HRESULT,
15471}
15472pub trait ICoreWebView2Environment6_Impl: ICoreWebView2Environment5_Impl {
15473    fn CreatePrintSettings(&self) -> windows_core::Result<ICoreWebView2PrintSettings>;
15474}
15475impl ICoreWebView2Environment6_Vtbl {
15476    pub const fn new<Identity: ICoreWebView2Environment6_Impl, const OFFSET: isize>() -> Self {
15477        unsafe extern "system" fn CreatePrintSettings<
15478            Identity: ICoreWebView2Environment6_Impl,
15479            const OFFSET: isize,
15480        >(
15481            this: *mut core::ffi::c_void,
15482            value: *mut *mut core::ffi::c_void,
15483        ) -> windows_core::HRESULT {
15484            unsafe {
15485                let this: &Identity =
15486                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15487                match ICoreWebView2Environment6_Impl::CreatePrintSettings(this) {
15488                    Ok(ok__) => {
15489                        value.write(core::mem::transmute(ok__));
15490                        windows_core::HRESULT(0)
15491                    }
15492                    Err(err) => err.into(),
15493                }
15494            }
15495        }
15496        Self {
15497            base__: ICoreWebView2Environment5_Vtbl::new::<Identity, OFFSET>(),
15498            CreatePrintSettings: CreatePrintSettings::<Identity, OFFSET>,
15499        }
15500    }
15501    pub fn matches(iid: &windows_core::GUID) -> bool {
15502        iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
15503            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15504            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15505            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15506            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
15507            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
15508    }
15509}
15510impl windows_core::RuntimeName for ICoreWebView2Environment6 {}
15511windows_core::imp::define_interface!(
15512    ICoreWebView2Environment7,
15513    ICoreWebView2Environment7_Vtbl,
15514    0x43c22296_3bbd_43a4_9c00_5c0df6dd29a2
15515);
15516impl core::ops::Deref for ICoreWebView2Environment7 {
15517    type Target = ICoreWebView2Environment6;
15518    fn deref(&self) -> &Self::Target {
15519        unsafe { core::mem::transmute(self) }
15520    }
15521}
15522windows_core::imp::interface_hierarchy!(
15523    ICoreWebView2Environment7,
15524    windows_core::IUnknown,
15525    ICoreWebView2Environment,
15526    ICoreWebView2Environment2,
15527    ICoreWebView2Environment3,
15528    ICoreWebView2Environment4,
15529    ICoreWebView2Environment5,
15530    ICoreWebView2Environment6
15531);
15532impl ICoreWebView2Environment7 {
15533    pub unsafe fn UserDataFolder(
15534        &self,
15535        value: *mut windows_core::PWSTR,
15536    ) -> windows_core::Result<()> {
15537        unsafe {
15538            (windows_core::Interface::vtable(self).UserDataFolder)(
15539                windows_core::Interface::as_raw(self),
15540                value as _,
15541            )
15542            .ok()
15543        }
15544    }
15545}
15546#[repr(C)]
15547#[doc(hidden)]
15548pub struct ICoreWebView2Environment7_Vtbl {
15549    pub base__: ICoreWebView2Environment6_Vtbl,
15550    pub UserDataFolder: unsafe extern "system" fn(
15551        *mut core::ffi::c_void,
15552        *mut windows_core::PWSTR,
15553    ) -> windows_core::HRESULT,
15554}
15555pub trait ICoreWebView2Environment7_Impl: ICoreWebView2Environment6_Impl {
15556    fn UserDataFolder(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
15557}
15558impl ICoreWebView2Environment7_Vtbl {
15559    pub const fn new<Identity: ICoreWebView2Environment7_Impl, const OFFSET: isize>() -> Self {
15560        unsafe extern "system" fn UserDataFolder<
15561            Identity: ICoreWebView2Environment7_Impl,
15562            const OFFSET: isize,
15563        >(
15564            this: *mut core::ffi::c_void,
15565            value: *mut windows_core::PWSTR,
15566        ) -> windows_core::HRESULT {
15567            unsafe {
15568                let this: &Identity =
15569                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15570                ICoreWebView2Environment7_Impl::UserDataFolder(
15571                    this,
15572                    core::mem::transmute_copy(&value),
15573                )
15574                .into()
15575            }
15576        }
15577        Self {
15578            base__: ICoreWebView2Environment6_Vtbl::new::<Identity, OFFSET>(),
15579            UserDataFolder: UserDataFolder::<Identity, OFFSET>,
15580        }
15581    }
15582    pub fn matches(iid: &windows_core::GUID) -> bool {
15583        iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
15584            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15585            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15586            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15587            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
15588            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
15589            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
15590    }
15591}
15592impl windows_core::RuntimeName for ICoreWebView2Environment7 {}
15593windows_core::imp::define_interface!(
15594    ICoreWebView2Environment8,
15595    ICoreWebView2Environment8_Vtbl,
15596    0xd6eb91dd_c3d2_45e5_bd29_6dc2bc4de9cf
15597);
15598impl core::ops::Deref for ICoreWebView2Environment8 {
15599    type Target = ICoreWebView2Environment7;
15600    fn deref(&self) -> &Self::Target {
15601        unsafe { core::mem::transmute(self) }
15602    }
15603}
15604windows_core::imp::interface_hierarchy!(
15605    ICoreWebView2Environment8,
15606    windows_core::IUnknown,
15607    ICoreWebView2Environment,
15608    ICoreWebView2Environment2,
15609    ICoreWebView2Environment3,
15610    ICoreWebView2Environment4,
15611    ICoreWebView2Environment5,
15612    ICoreWebView2Environment6,
15613    ICoreWebView2Environment7
15614);
15615impl ICoreWebView2Environment8 {
15616    pub unsafe fn add_ProcessInfosChanged<P0>(
15617        &self,
15618        eventhandler: P0,
15619        token: *mut i64,
15620    ) -> windows_core::Result<()>
15621    where
15622        P0: windows_core::Param<ICoreWebView2ProcessInfosChangedEventHandler>,
15623    {
15624        unsafe {
15625            (windows_core::Interface::vtable(self).add_ProcessInfosChanged)(
15626                windows_core::Interface::as_raw(self),
15627                eventhandler.param().abi(),
15628                token as _,
15629            )
15630            .ok()
15631        }
15632    }
15633    pub unsafe fn remove_ProcessInfosChanged(&self, token: i64) -> windows_core::Result<()> {
15634        unsafe {
15635            (windows_core::Interface::vtable(self).remove_ProcessInfosChanged)(
15636                windows_core::Interface::as_raw(self),
15637                token,
15638            )
15639            .ok()
15640        }
15641    }
15642    pub unsafe fn GetProcessInfos(
15643        &self,
15644    ) -> windows_core::Result<ICoreWebView2ProcessInfoCollection> {
15645        unsafe {
15646            let mut result__ = core::mem::zeroed();
15647            (windows_core::Interface::vtable(self).GetProcessInfos)(
15648                windows_core::Interface::as_raw(self),
15649                &mut result__,
15650            )
15651            .and_then(|| windows_core::Type::from_abi(result__))
15652        }
15653    }
15654}
15655#[repr(C)]
15656#[doc(hidden)]
15657pub struct ICoreWebView2Environment8_Vtbl {
15658    pub base__: ICoreWebView2Environment7_Vtbl,
15659    pub add_ProcessInfosChanged: unsafe extern "system" fn(
15660        *mut core::ffi::c_void,
15661        *mut core::ffi::c_void,
15662        *mut i64,
15663    ) -> windows_core::HRESULT,
15664    pub remove_ProcessInfosChanged:
15665        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
15666    pub GetProcessInfos: unsafe extern "system" fn(
15667        *mut core::ffi::c_void,
15668        *mut *mut core::ffi::c_void,
15669    ) -> windows_core::HRESULT,
15670}
15671pub trait ICoreWebView2Environment8_Impl: ICoreWebView2Environment7_Impl {
15672    fn add_ProcessInfosChanged(
15673        &self,
15674        eventhandler: windows_core::Ref<'_, ICoreWebView2ProcessInfosChangedEventHandler>,
15675        token: *mut i64,
15676    ) -> windows_core::Result<()>;
15677    fn remove_ProcessInfosChanged(&self, token: i64) -> windows_core::Result<()>;
15678    fn GetProcessInfos(&self) -> windows_core::Result<ICoreWebView2ProcessInfoCollection>;
15679}
15680impl ICoreWebView2Environment8_Vtbl {
15681    pub const fn new<Identity: ICoreWebView2Environment8_Impl, const OFFSET: isize>() -> Self {
15682        unsafe extern "system" fn add_ProcessInfosChanged<
15683            Identity: ICoreWebView2Environment8_Impl,
15684            const OFFSET: isize,
15685        >(
15686            this: *mut core::ffi::c_void,
15687            eventhandler: *mut core::ffi::c_void,
15688            token: *mut i64,
15689        ) -> windows_core::HRESULT {
15690            unsafe {
15691                let this: &Identity =
15692                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15693                ICoreWebView2Environment8_Impl::add_ProcessInfosChanged(
15694                    this,
15695                    core::mem::transmute_copy(&eventhandler),
15696                    core::mem::transmute_copy(&token),
15697                )
15698                .into()
15699            }
15700        }
15701        unsafe extern "system" fn remove_ProcessInfosChanged<
15702            Identity: ICoreWebView2Environment8_Impl,
15703            const OFFSET: isize,
15704        >(
15705            this: *mut core::ffi::c_void,
15706            token: i64,
15707        ) -> windows_core::HRESULT {
15708            unsafe {
15709                let this: &Identity =
15710                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15711                ICoreWebView2Environment8_Impl::remove_ProcessInfosChanged(
15712                    this,
15713                    core::mem::transmute_copy(&token),
15714                )
15715                .into()
15716            }
15717        }
15718        unsafe extern "system" fn GetProcessInfos<
15719            Identity: ICoreWebView2Environment8_Impl,
15720            const OFFSET: isize,
15721        >(
15722            this: *mut core::ffi::c_void,
15723            value: *mut *mut core::ffi::c_void,
15724        ) -> windows_core::HRESULT {
15725            unsafe {
15726                let this: &Identity =
15727                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15728                match ICoreWebView2Environment8_Impl::GetProcessInfos(this) {
15729                    Ok(ok__) => {
15730                        value.write(core::mem::transmute(ok__));
15731                        windows_core::HRESULT(0)
15732                    }
15733                    Err(err) => err.into(),
15734                }
15735            }
15736        }
15737        Self {
15738            base__: ICoreWebView2Environment7_Vtbl::new::<Identity, OFFSET>(),
15739            add_ProcessInfosChanged: add_ProcessInfosChanged::<Identity, OFFSET>,
15740            remove_ProcessInfosChanged: remove_ProcessInfosChanged::<Identity, OFFSET>,
15741            GetProcessInfos: GetProcessInfos::<Identity, OFFSET>,
15742        }
15743    }
15744    pub fn matches(iid: &windows_core::GUID) -> bool {
15745        iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
15746            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15747            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15748            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15749            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
15750            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
15751            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
15752            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
15753    }
15754}
15755impl windows_core::RuntimeName for ICoreWebView2Environment8 {}
15756windows_core::imp::define_interface!(
15757    ICoreWebView2Environment9,
15758    ICoreWebView2Environment9_Vtbl,
15759    0xf06f41bf_4b5a_49d8_b9f6_fa16cd29f274
15760);
15761impl core::ops::Deref for ICoreWebView2Environment9 {
15762    type Target = ICoreWebView2Environment8;
15763    fn deref(&self) -> &Self::Target {
15764        unsafe { core::mem::transmute(self) }
15765    }
15766}
15767windows_core::imp::interface_hierarchy!(
15768    ICoreWebView2Environment9,
15769    windows_core::IUnknown,
15770    ICoreWebView2Environment,
15771    ICoreWebView2Environment2,
15772    ICoreWebView2Environment3,
15773    ICoreWebView2Environment4,
15774    ICoreWebView2Environment5,
15775    ICoreWebView2Environment6,
15776    ICoreWebView2Environment7,
15777    ICoreWebView2Environment8
15778);
15779impl ICoreWebView2Environment9 {
15780    pub unsafe fn CreateContextMenuItem<P0, P1>(
15781        &self,
15782        label: P0,
15783        iconstream: P1,
15784        kind: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
15785    ) -> windows_core::Result<ICoreWebView2ContextMenuItem>
15786    where
15787        P0: windows_core::Param<windows_core::PCWSTR>,
15788        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
15789    {
15790        unsafe {
15791            let mut result__ = core::mem::zeroed();
15792            (windows_core::Interface::vtable(self).CreateContextMenuItem)(
15793                windows_core::Interface::as_raw(self),
15794                label.param().abi(),
15795                iconstream.param().abi(),
15796                kind,
15797                &mut result__,
15798            )
15799            .and_then(|| windows_core::Type::from_abi(result__))
15800        }
15801    }
15802}
15803#[repr(C)]
15804#[doc(hidden)]
15805pub struct ICoreWebView2Environment9_Vtbl {
15806    pub base__: ICoreWebView2Environment8_Vtbl,
15807    pub CreateContextMenuItem: unsafe extern "system" fn(
15808        *mut core::ffi::c_void,
15809        windows_core::PCWSTR,
15810        *mut core::ffi::c_void,
15811        COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
15812        *mut *mut core::ffi::c_void,
15813    ) -> windows_core::HRESULT,
15814}
15815pub trait ICoreWebView2Environment9_Impl: ICoreWebView2Environment8_Impl {
15816    fn CreateContextMenuItem(
15817        &self,
15818        label: &windows_core::PCWSTR,
15819        iconstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
15820        kind: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
15821    ) -> windows_core::Result<ICoreWebView2ContextMenuItem>;
15822}
15823impl ICoreWebView2Environment9_Vtbl {
15824    pub const fn new<Identity: ICoreWebView2Environment9_Impl, const OFFSET: isize>() -> Self {
15825        unsafe extern "system" fn CreateContextMenuItem<
15826            Identity: ICoreWebView2Environment9_Impl,
15827            const OFFSET: isize,
15828        >(
15829            this: *mut core::ffi::c_void,
15830            label: windows_core::PCWSTR,
15831            iconstream: *mut core::ffi::c_void,
15832            kind: COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND,
15833            value: *mut *mut core::ffi::c_void,
15834        ) -> windows_core::HRESULT {
15835            unsafe {
15836                let this: &Identity =
15837                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15838                match ICoreWebView2Environment9_Impl::CreateContextMenuItem(
15839                    this,
15840                    core::mem::transmute(&label),
15841                    core::mem::transmute_copy(&iconstream),
15842                    core::mem::transmute_copy(&kind),
15843                ) {
15844                    Ok(ok__) => {
15845                        value.write(core::mem::transmute(ok__));
15846                        windows_core::HRESULT(0)
15847                    }
15848                    Err(err) => err.into(),
15849                }
15850            }
15851        }
15852        Self {
15853            base__: ICoreWebView2Environment8_Vtbl::new::<Identity, OFFSET>(),
15854            CreateContextMenuItem: CreateContextMenuItem::<Identity, OFFSET>,
15855        }
15856    }
15857    pub fn matches(iid: &windows_core::GUID) -> bool {
15858        iid == &<ICoreWebView2Environment9 as windows_core::Interface>::IID
15859            || iid == &<ICoreWebView2Environment as windows_core::Interface>::IID
15860            || iid == &<ICoreWebView2Environment2 as windows_core::Interface>::IID
15861            || iid == &<ICoreWebView2Environment3 as windows_core::Interface>::IID
15862            || iid == &<ICoreWebView2Environment4 as windows_core::Interface>::IID
15863            || iid == &<ICoreWebView2Environment5 as windows_core::Interface>::IID
15864            || iid == &<ICoreWebView2Environment6 as windows_core::Interface>::IID
15865            || iid == &<ICoreWebView2Environment7 as windows_core::Interface>::IID
15866            || iid == &<ICoreWebView2Environment8 as windows_core::Interface>::IID
15867    }
15868}
15869impl windows_core::RuntimeName for ICoreWebView2Environment9 {}
15870windows_core::imp::define_interface!(
15871    ICoreWebView2EnvironmentOptions,
15872    ICoreWebView2EnvironmentOptions_Vtbl,
15873    0x2fde08a8_1e9a_4766_8c05_95a9ceb9d1c5
15874);
15875windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions, windows_core::IUnknown);
15876impl ICoreWebView2EnvironmentOptions {
15877    pub unsafe fn AdditionalBrowserArguments(
15878        &self,
15879        value: *mut windows_core::PWSTR,
15880    ) -> windows_core::Result<()> {
15881        unsafe {
15882            (windows_core::Interface::vtable(self).AdditionalBrowserArguments)(
15883                windows_core::Interface::as_raw(self),
15884                value as _,
15885            )
15886            .ok()
15887        }
15888    }
15889    pub unsafe fn SetAdditionalBrowserArguments<P0>(&self, value: P0) -> windows_core::Result<()>
15890    where
15891        P0: windows_core::Param<windows_core::PCWSTR>,
15892    {
15893        unsafe {
15894            (windows_core::Interface::vtable(self).SetAdditionalBrowserArguments)(
15895                windows_core::Interface::as_raw(self),
15896                value.param().abi(),
15897            )
15898            .ok()
15899        }
15900    }
15901    pub unsafe fn Language(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
15902        unsafe {
15903            (windows_core::Interface::vtable(self).Language)(
15904                windows_core::Interface::as_raw(self),
15905                value as _,
15906            )
15907            .ok()
15908        }
15909    }
15910    pub unsafe fn SetLanguage<P0>(&self, value: P0) -> windows_core::Result<()>
15911    where
15912        P0: windows_core::Param<windows_core::PCWSTR>,
15913    {
15914        unsafe {
15915            (windows_core::Interface::vtable(self).SetLanguage)(
15916                windows_core::Interface::as_raw(self),
15917                value.param().abi(),
15918            )
15919            .ok()
15920        }
15921    }
15922    pub unsafe fn TargetCompatibleBrowserVersion(
15923        &self,
15924        value: *mut windows_core::PWSTR,
15925    ) -> windows_core::Result<()> {
15926        unsafe {
15927            (windows_core::Interface::vtable(self).TargetCompatibleBrowserVersion)(
15928                windows_core::Interface::as_raw(self),
15929                value as _,
15930            )
15931            .ok()
15932        }
15933    }
15934    pub unsafe fn SetTargetCompatibleBrowserVersion<P0>(
15935        &self,
15936        value: P0,
15937    ) -> windows_core::Result<()>
15938    where
15939        P0: windows_core::Param<windows_core::PCWSTR>,
15940    {
15941        unsafe {
15942            (windows_core::Interface::vtable(self).SetTargetCompatibleBrowserVersion)(
15943                windows_core::Interface::as_raw(self),
15944                value.param().abi(),
15945            )
15946            .ok()
15947        }
15948    }
15949    pub unsafe fn AllowSingleSignOnUsingOSPrimaryAccount(
15950        &self,
15951        allow: *mut windows_core::BOOL,
15952    ) -> windows_core::Result<()> {
15953        unsafe {
15954            (windows_core::Interface::vtable(self).AllowSingleSignOnUsingOSPrimaryAccount)(
15955                windows_core::Interface::as_raw(self),
15956                allow as _,
15957            )
15958            .ok()
15959        }
15960    }
15961    pub unsafe fn SetAllowSingleSignOnUsingOSPrimaryAccount(
15962        &self,
15963        allow: bool,
15964    ) -> windows_core::Result<()> {
15965        unsafe {
15966            (windows_core::Interface::vtable(self).SetAllowSingleSignOnUsingOSPrimaryAccount)(
15967                windows_core::Interface::as_raw(self),
15968                allow.into(),
15969            )
15970            .ok()
15971        }
15972    }
15973}
15974#[repr(C)]
15975#[doc(hidden)]
15976pub struct ICoreWebView2EnvironmentOptions_Vtbl {
15977    pub base__: windows_core::IUnknown_Vtbl,
15978    pub AdditionalBrowserArguments: unsafe extern "system" fn(
15979        *mut core::ffi::c_void,
15980        *mut windows_core::PWSTR,
15981    ) -> windows_core::HRESULT,
15982    pub SetAdditionalBrowserArguments: unsafe extern "system" fn(
15983        *mut core::ffi::c_void,
15984        windows_core::PCWSTR,
15985    ) -> windows_core::HRESULT,
15986    pub Language: unsafe extern "system" fn(
15987        *mut core::ffi::c_void,
15988        *mut windows_core::PWSTR,
15989    ) -> windows_core::HRESULT,
15990    pub SetLanguage: unsafe extern "system" fn(
15991        *mut core::ffi::c_void,
15992        windows_core::PCWSTR,
15993    ) -> windows_core::HRESULT,
15994    pub TargetCompatibleBrowserVersion: unsafe extern "system" fn(
15995        *mut core::ffi::c_void,
15996        *mut windows_core::PWSTR,
15997    ) -> windows_core::HRESULT,
15998    pub SetTargetCompatibleBrowserVersion: unsafe extern "system" fn(
15999        *mut core::ffi::c_void,
16000        windows_core::PCWSTR,
16001    ) -> windows_core::HRESULT,
16002    pub AllowSingleSignOnUsingOSPrimaryAccount: unsafe extern "system" fn(
16003        *mut core::ffi::c_void,
16004        *mut windows_core::BOOL,
16005    )
16006        -> windows_core::HRESULT,
16007    pub SetAllowSingleSignOnUsingOSPrimaryAccount:
16008        unsafe extern "system" fn(
16009            *mut core::ffi::c_void,
16010            windows_core::BOOL,
16011        ) -> windows_core::HRESULT,
16012}
16013pub trait ICoreWebView2EnvironmentOptions_Impl: windows_core::IUnknownImpl {
16014    fn AdditionalBrowserArguments(
16015        &self,
16016        value: *mut windows_core::PWSTR,
16017    ) -> windows_core::Result<()>;
16018    fn SetAdditionalBrowserArguments(
16019        &self,
16020        value: &windows_core::PCWSTR,
16021    ) -> windows_core::Result<()>;
16022    fn Language(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
16023    fn SetLanguage(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
16024    fn TargetCompatibleBrowserVersion(
16025        &self,
16026        value: *mut windows_core::PWSTR,
16027    ) -> windows_core::Result<()>;
16028    fn SetTargetCompatibleBrowserVersion(
16029        &self,
16030        value: &windows_core::PCWSTR,
16031    ) -> windows_core::Result<()>;
16032    fn AllowSingleSignOnUsingOSPrimaryAccount(
16033        &self,
16034        allow: *mut windows_core::BOOL,
16035    ) -> windows_core::Result<()>;
16036    fn SetAllowSingleSignOnUsingOSPrimaryAccount(
16037        &self,
16038        allow: windows_core::BOOL,
16039    ) -> windows_core::Result<()>;
16040}
16041impl ICoreWebView2EnvironmentOptions_Vtbl {
16042    pub const fn new<Identity: ICoreWebView2EnvironmentOptions_Impl, const OFFSET: isize>() -> Self
16043    {
16044        unsafe extern "system" fn AdditionalBrowserArguments<
16045            Identity: ICoreWebView2EnvironmentOptions_Impl,
16046            const OFFSET: isize,
16047        >(
16048            this: *mut core::ffi::c_void,
16049            value: *mut windows_core::PWSTR,
16050        ) -> windows_core::HRESULT {
16051            unsafe {
16052                let this: &Identity =
16053                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16054                ICoreWebView2EnvironmentOptions_Impl::AdditionalBrowserArguments(
16055                    this,
16056                    core::mem::transmute_copy(&value),
16057                )
16058                .into()
16059            }
16060        }
16061        unsafe extern "system" fn SetAdditionalBrowserArguments<
16062            Identity: ICoreWebView2EnvironmentOptions_Impl,
16063            const OFFSET: isize,
16064        >(
16065            this: *mut core::ffi::c_void,
16066            value: windows_core::PCWSTR,
16067        ) -> windows_core::HRESULT {
16068            unsafe {
16069                let this: &Identity =
16070                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16071                ICoreWebView2EnvironmentOptions_Impl::SetAdditionalBrowserArguments(
16072                    this,
16073                    core::mem::transmute(&value),
16074                )
16075                .into()
16076            }
16077        }
16078        unsafe extern "system" fn Language<
16079            Identity: ICoreWebView2EnvironmentOptions_Impl,
16080            const OFFSET: isize,
16081        >(
16082            this: *mut core::ffi::c_void,
16083            value: *mut windows_core::PWSTR,
16084        ) -> windows_core::HRESULT {
16085            unsafe {
16086                let this: &Identity =
16087                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16088                ICoreWebView2EnvironmentOptions_Impl::Language(
16089                    this,
16090                    core::mem::transmute_copy(&value),
16091                )
16092                .into()
16093            }
16094        }
16095        unsafe extern "system" fn SetLanguage<
16096            Identity: ICoreWebView2EnvironmentOptions_Impl,
16097            const OFFSET: isize,
16098        >(
16099            this: *mut core::ffi::c_void,
16100            value: windows_core::PCWSTR,
16101        ) -> windows_core::HRESULT {
16102            unsafe {
16103                let this: &Identity =
16104                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16105                ICoreWebView2EnvironmentOptions_Impl::SetLanguage(
16106                    this,
16107                    core::mem::transmute(&value),
16108                )
16109                .into()
16110            }
16111        }
16112        unsafe extern "system" fn TargetCompatibleBrowserVersion<
16113            Identity: ICoreWebView2EnvironmentOptions_Impl,
16114            const OFFSET: isize,
16115        >(
16116            this: *mut core::ffi::c_void,
16117            value: *mut windows_core::PWSTR,
16118        ) -> windows_core::HRESULT {
16119            unsafe {
16120                let this: &Identity =
16121                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16122                ICoreWebView2EnvironmentOptions_Impl::TargetCompatibleBrowserVersion(
16123                    this,
16124                    core::mem::transmute_copy(&value),
16125                )
16126                .into()
16127            }
16128        }
16129        unsafe extern "system" fn SetTargetCompatibleBrowserVersion<
16130            Identity: ICoreWebView2EnvironmentOptions_Impl,
16131            const OFFSET: isize,
16132        >(
16133            this: *mut core::ffi::c_void,
16134            value: windows_core::PCWSTR,
16135        ) -> windows_core::HRESULT {
16136            unsafe {
16137                let this: &Identity =
16138                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16139                ICoreWebView2EnvironmentOptions_Impl::SetTargetCompatibleBrowserVersion(
16140                    this,
16141                    core::mem::transmute(&value),
16142                )
16143                .into()
16144            }
16145        }
16146        unsafe extern "system" fn AllowSingleSignOnUsingOSPrimaryAccount<
16147            Identity: ICoreWebView2EnvironmentOptions_Impl,
16148            const OFFSET: isize,
16149        >(
16150            this: *mut core::ffi::c_void,
16151            allow: *mut windows_core::BOOL,
16152        ) -> windows_core::HRESULT {
16153            unsafe {
16154                let this: &Identity =
16155                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16156                ICoreWebView2EnvironmentOptions_Impl::AllowSingleSignOnUsingOSPrimaryAccount(
16157                    this,
16158                    core::mem::transmute_copy(&allow),
16159                )
16160                .into()
16161            }
16162        }
16163        unsafe extern "system" fn SetAllowSingleSignOnUsingOSPrimaryAccount<
16164            Identity: ICoreWebView2EnvironmentOptions_Impl,
16165            const OFFSET: isize,
16166        >(
16167            this: *mut core::ffi::c_void,
16168            allow: windows_core::BOOL,
16169        ) -> windows_core::HRESULT {
16170            unsafe {
16171                let this: &Identity =
16172                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16173                ICoreWebView2EnvironmentOptions_Impl::SetAllowSingleSignOnUsingOSPrimaryAccount(
16174                    this,
16175                    core::mem::transmute_copy(&allow),
16176                )
16177                .into()
16178            }
16179        }
16180        Self {
16181            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16182            AdditionalBrowserArguments: AdditionalBrowserArguments::<Identity, OFFSET>,
16183            SetAdditionalBrowserArguments: SetAdditionalBrowserArguments::<Identity, OFFSET>,
16184            Language: Language::<Identity, OFFSET>,
16185            SetLanguage: SetLanguage::<Identity, OFFSET>,
16186            TargetCompatibleBrowserVersion: TargetCompatibleBrowserVersion::<Identity, OFFSET>,
16187            SetTargetCompatibleBrowserVersion: SetTargetCompatibleBrowserVersion::<Identity, OFFSET>,
16188            AllowSingleSignOnUsingOSPrimaryAccount: AllowSingleSignOnUsingOSPrimaryAccount::<
16189                Identity,
16190                OFFSET,
16191            >,
16192            SetAllowSingleSignOnUsingOSPrimaryAccount: SetAllowSingleSignOnUsingOSPrimaryAccount::<
16193                Identity,
16194                OFFSET,
16195            >,
16196        }
16197    }
16198    pub fn matches(iid: &windows_core::GUID) -> bool {
16199        iid == &<ICoreWebView2EnvironmentOptions as windows_core::Interface>::IID
16200    }
16201}
16202impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions {}
16203windows_core::imp::define_interface!(
16204    ICoreWebView2EnvironmentOptions2,
16205    ICoreWebView2EnvironmentOptions2_Vtbl,
16206    0xff85c98a_1ba7_4a6b_90c8_2b752c89e9e2
16207);
16208windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions2, windows_core::IUnknown);
16209impl ICoreWebView2EnvironmentOptions2 {
16210    pub unsafe fn ExclusiveUserDataFolderAccess(
16211        &self,
16212        value: *mut windows_core::BOOL,
16213    ) -> windows_core::Result<()> {
16214        unsafe {
16215            (windows_core::Interface::vtable(self).ExclusiveUserDataFolderAccess)(
16216                windows_core::Interface::as_raw(self),
16217                value as _,
16218            )
16219            .ok()
16220        }
16221    }
16222    pub unsafe fn SetExclusiveUserDataFolderAccess(&self, value: bool) -> windows_core::Result<()> {
16223        unsafe {
16224            (windows_core::Interface::vtable(self).SetExclusiveUserDataFolderAccess)(
16225                windows_core::Interface::as_raw(self),
16226                value.into(),
16227            )
16228            .ok()
16229        }
16230    }
16231}
16232#[repr(C)]
16233#[doc(hidden)]
16234pub struct ICoreWebView2EnvironmentOptions2_Vtbl {
16235    pub base__: windows_core::IUnknown_Vtbl,
16236    pub ExclusiveUserDataFolderAccess: unsafe extern "system" fn(
16237        *mut core::ffi::c_void,
16238        *mut windows_core::BOOL,
16239    ) -> windows_core::HRESULT,
16240    pub SetExclusiveUserDataFolderAccess: unsafe extern "system" fn(
16241        *mut core::ffi::c_void,
16242        windows_core::BOOL,
16243    ) -> windows_core::HRESULT,
16244}
16245pub trait ICoreWebView2EnvironmentOptions2_Impl: windows_core::IUnknownImpl {
16246    fn ExclusiveUserDataFolderAccess(
16247        &self,
16248        value: *mut windows_core::BOOL,
16249    ) -> windows_core::Result<()>;
16250    fn SetExclusiveUserDataFolderAccess(
16251        &self,
16252        value: windows_core::BOOL,
16253    ) -> windows_core::Result<()>;
16254}
16255impl ICoreWebView2EnvironmentOptions2_Vtbl {
16256    pub const fn new<Identity: ICoreWebView2EnvironmentOptions2_Impl, const OFFSET: isize>() -> Self
16257    {
16258        unsafe extern "system" fn ExclusiveUserDataFolderAccess<
16259            Identity: ICoreWebView2EnvironmentOptions2_Impl,
16260            const OFFSET: isize,
16261        >(
16262            this: *mut core::ffi::c_void,
16263            value: *mut windows_core::BOOL,
16264        ) -> windows_core::HRESULT {
16265            unsafe {
16266                let this: &Identity =
16267                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16268                ICoreWebView2EnvironmentOptions2_Impl::ExclusiveUserDataFolderAccess(
16269                    this,
16270                    core::mem::transmute_copy(&value),
16271                )
16272                .into()
16273            }
16274        }
16275        unsafe extern "system" fn SetExclusiveUserDataFolderAccess<
16276            Identity: ICoreWebView2EnvironmentOptions2_Impl,
16277            const OFFSET: isize,
16278        >(
16279            this: *mut core::ffi::c_void,
16280            value: windows_core::BOOL,
16281        ) -> windows_core::HRESULT {
16282            unsafe {
16283                let this: &Identity =
16284                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16285                ICoreWebView2EnvironmentOptions2_Impl::SetExclusiveUserDataFolderAccess(
16286                    this,
16287                    core::mem::transmute_copy(&value),
16288                )
16289                .into()
16290            }
16291        }
16292        Self {
16293            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16294            ExclusiveUserDataFolderAccess: ExclusiveUserDataFolderAccess::<Identity, OFFSET>,
16295            SetExclusiveUserDataFolderAccess: SetExclusiveUserDataFolderAccess::<Identity, OFFSET>,
16296        }
16297    }
16298    pub fn matches(iid: &windows_core::GUID) -> bool {
16299        iid == &<ICoreWebView2EnvironmentOptions2 as windows_core::Interface>::IID
16300    }
16301}
16302impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions2 {}
16303windows_core::imp::define_interface!(
16304    ICoreWebView2EnvironmentOptions3,
16305    ICoreWebView2EnvironmentOptions3_Vtbl,
16306    0x4a5c436e_a9e3_4a2e_89c3_910d3513f5cc
16307);
16308windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions3, windows_core::IUnknown);
16309impl ICoreWebView2EnvironmentOptions3 {
16310    pub unsafe fn IsCustomCrashReportingEnabled(
16311        &self,
16312        value: *mut windows_core::BOOL,
16313    ) -> windows_core::Result<()> {
16314        unsafe {
16315            (windows_core::Interface::vtable(self).IsCustomCrashReportingEnabled)(
16316                windows_core::Interface::as_raw(self),
16317                value as _,
16318            )
16319            .ok()
16320        }
16321    }
16322    pub unsafe fn SetIsCustomCrashReportingEnabled(&self, value: bool) -> windows_core::Result<()> {
16323        unsafe {
16324            (windows_core::Interface::vtable(self).SetIsCustomCrashReportingEnabled)(
16325                windows_core::Interface::as_raw(self),
16326                value.into(),
16327            )
16328            .ok()
16329        }
16330    }
16331}
16332#[repr(C)]
16333#[doc(hidden)]
16334pub struct ICoreWebView2EnvironmentOptions3_Vtbl {
16335    pub base__: windows_core::IUnknown_Vtbl,
16336    pub IsCustomCrashReportingEnabled: unsafe extern "system" fn(
16337        *mut core::ffi::c_void,
16338        *mut windows_core::BOOL,
16339    ) -> windows_core::HRESULT,
16340    pub SetIsCustomCrashReportingEnabled: unsafe extern "system" fn(
16341        *mut core::ffi::c_void,
16342        windows_core::BOOL,
16343    ) -> windows_core::HRESULT,
16344}
16345pub trait ICoreWebView2EnvironmentOptions3_Impl: windows_core::IUnknownImpl {
16346    fn IsCustomCrashReportingEnabled(
16347        &self,
16348        value: *mut windows_core::BOOL,
16349    ) -> windows_core::Result<()>;
16350    fn SetIsCustomCrashReportingEnabled(
16351        &self,
16352        value: windows_core::BOOL,
16353    ) -> windows_core::Result<()>;
16354}
16355impl ICoreWebView2EnvironmentOptions3_Vtbl {
16356    pub const fn new<Identity: ICoreWebView2EnvironmentOptions3_Impl, const OFFSET: isize>() -> Self
16357    {
16358        unsafe extern "system" fn IsCustomCrashReportingEnabled<
16359            Identity: ICoreWebView2EnvironmentOptions3_Impl,
16360            const OFFSET: isize,
16361        >(
16362            this: *mut core::ffi::c_void,
16363            value: *mut windows_core::BOOL,
16364        ) -> windows_core::HRESULT {
16365            unsafe {
16366                let this: &Identity =
16367                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16368                ICoreWebView2EnvironmentOptions3_Impl::IsCustomCrashReportingEnabled(
16369                    this,
16370                    core::mem::transmute_copy(&value),
16371                )
16372                .into()
16373            }
16374        }
16375        unsafe extern "system" fn SetIsCustomCrashReportingEnabled<
16376            Identity: ICoreWebView2EnvironmentOptions3_Impl,
16377            const OFFSET: isize,
16378        >(
16379            this: *mut core::ffi::c_void,
16380            value: windows_core::BOOL,
16381        ) -> windows_core::HRESULT {
16382            unsafe {
16383                let this: &Identity =
16384                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16385                ICoreWebView2EnvironmentOptions3_Impl::SetIsCustomCrashReportingEnabled(
16386                    this,
16387                    core::mem::transmute_copy(&value),
16388                )
16389                .into()
16390            }
16391        }
16392        Self {
16393            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16394            IsCustomCrashReportingEnabled: IsCustomCrashReportingEnabled::<Identity, OFFSET>,
16395            SetIsCustomCrashReportingEnabled: SetIsCustomCrashReportingEnabled::<Identity, OFFSET>,
16396        }
16397    }
16398    pub fn matches(iid: &windows_core::GUID) -> bool {
16399        iid == &<ICoreWebView2EnvironmentOptions3 as windows_core::Interface>::IID
16400    }
16401}
16402impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions3 {}
16403windows_core::imp::define_interface!(
16404    ICoreWebView2EnvironmentOptions4,
16405    ICoreWebView2EnvironmentOptions4_Vtbl,
16406    0xac52d13f_0d38_475a_9dca_876580d6793e
16407);
16408windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions4, windows_core::IUnknown);
16409impl ICoreWebView2EnvironmentOptions4 {
16410    pub unsafe fn GetCustomSchemeRegistrations(
16411        &self,
16412        count: *mut u32,
16413        schemeregistrations: *mut *mut Option<ICoreWebView2CustomSchemeRegistration>,
16414    ) -> windows_core::Result<()> {
16415        unsafe {
16416            (windows_core::Interface::vtable(self).GetCustomSchemeRegistrations)(
16417                windows_core::Interface::as_raw(self),
16418                count as _,
16419                schemeregistrations as _,
16420            )
16421            .ok()
16422        }
16423    }
16424    pub unsafe fn SetCustomSchemeRegistrations(
16425        &self,
16426        count: u32,
16427    ) -> windows_core::Result<ICoreWebView2CustomSchemeRegistration> {
16428        unsafe {
16429            let mut result__ = core::mem::zeroed();
16430            (windows_core::Interface::vtable(self).SetCustomSchemeRegistrations)(
16431                windows_core::Interface::as_raw(self),
16432                count,
16433                &mut result__,
16434            )
16435            .and_then(|| windows_core::Type::from_abi(result__))
16436        }
16437    }
16438}
16439#[repr(C)]
16440#[doc(hidden)]
16441pub struct ICoreWebView2EnvironmentOptions4_Vtbl {
16442    pub base__: windows_core::IUnknown_Vtbl,
16443    pub GetCustomSchemeRegistrations: unsafe extern "system" fn(
16444        *mut core::ffi::c_void,
16445        *mut u32,
16446        *mut *mut *mut core::ffi::c_void,
16447    ) -> windows_core::HRESULT,
16448    pub SetCustomSchemeRegistrations: unsafe extern "system" fn(
16449        *mut core::ffi::c_void,
16450        u32,
16451        *mut *mut core::ffi::c_void,
16452    ) -> windows_core::HRESULT,
16453}
16454pub trait ICoreWebView2EnvironmentOptions4_Impl: windows_core::IUnknownImpl {
16455    fn GetCustomSchemeRegistrations(
16456        &self,
16457        count: *mut u32,
16458        schemeregistrations: *mut *mut Option<ICoreWebView2CustomSchemeRegistration>,
16459    ) -> windows_core::Result<()>;
16460    fn SetCustomSchemeRegistrations(
16461        &self,
16462        count: u32,
16463    ) -> windows_core::Result<ICoreWebView2CustomSchemeRegistration>;
16464}
16465impl ICoreWebView2EnvironmentOptions4_Vtbl {
16466    pub const fn new<Identity: ICoreWebView2EnvironmentOptions4_Impl, const OFFSET: isize>() -> Self
16467    {
16468        unsafe extern "system" fn GetCustomSchemeRegistrations<
16469            Identity: ICoreWebView2EnvironmentOptions4_Impl,
16470            const OFFSET: isize,
16471        >(
16472            this: *mut core::ffi::c_void,
16473            count: *mut u32,
16474            schemeregistrations: *mut *mut *mut core::ffi::c_void,
16475        ) -> windows_core::HRESULT {
16476            unsafe {
16477                let this: &Identity =
16478                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16479                ICoreWebView2EnvironmentOptions4_Impl::GetCustomSchemeRegistrations(
16480                    this,
16481                    core::mem::transmute_copy(&count),
16482                    core::mem::transmute_copy(&schemeregistrations),
16483                )
16484                .into()
16485            }
16486        }
16487        unsafe extern "system" fn SetCustomSchemeRegistrations<
16488            Identity: ICoreWebView2EnvironmentOptions4_Impl,
16489            const OFFSET: isize,
16490        >(
16491            this: *mut core::ffi::c_void,
16492            count: u32,
16493            schemeregistrations: *mut *mut core::ffi::c_void,
16494        ) -> windows_core::HRESULT {
16495            unsafe {
16496                let this: &Identity =
16497                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16498                match ICoreWebView2EnvironmentOptions4_Impl::SetCustomSchemeRegistrations(
16499                    this,
16500                    core::mem::transmute_copy(&count),
16501                ) {
16502                    Ok(ok__) => {
16503                        schemeregistrations.write(core::mem::transmute(ok__));
16504                        windows_core::HRESULT(0)
16505                    }
16506                    Err(err) => err.into(),
16507                }
16508            }
16509        }
16510        Self {
16511            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16512            GetCustomSchemeRegistrations: GetCustomSchemeRegistrations::<Identity, OFFSET>,
16513            SetCustomSchemeRegistrations: SetCustomSchemeRegistrations::<Identity, OFFSET>,
16514        }
16515    }
16516    pub fn matches(iid: &windows_core::GUID) -> bool {
16517        iid == &<ICoreWebView2EnvironmentOptions4 as windows_core::Interface>::IID
16518    }
16519}
16520impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions4 {}
16521windows_core::imp::define_interface!(
16522    ICoreWebView2EnvironmentOptions5,
16523    ICoreWebView2EnvironmentOptions5_Vtbl,
16524    0x0ae35d64_c47f_4464_814e_259c345d1501
16525);
16526windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions5, windows_core::IUnknown);
16527impl ICoreWebView2EnvironmentOptions5 {
16528    pub unsafe fn EnableTrackingPrevention(
16529        &self,
16530        value: *mut windows_core::BOOL,
16531    ) -> windows_core::Result<()> {
16532        unsafe {
16533            (windows_core::Interface::vtable(self).EnableTrackingPrevention)(
16534                windows_core::Interface::as_raw(self),
16535                value as _,
16536            )
16537            .ok()
16538        }
16539    }
16540    pub unsafe fn SetEnableTrackingPrevention(&self, value: bool) -> windows_core::Result<()> {
16541        unsafe {
16542            (windows_core::Interface::vtable(self).SetEnableTrackingPrevention)(
16543                windows_core::Interface::as_raw(self),
16544                value.into(),
16545            )
16546            .ok()
16547        }
16548    }
16549}
16550#[repr(C)]
16551#[doc(hidden)]
16552pub struct ICoreWebView2EnvironmentOptions5_Vtbl {
16553    pub base__: windows_core::IUnknown_Vtbl,
16554    pub EnableTrackingPrevention: unsafe extern "system" fn(
16555        *mut core::ffi::c_void,
16556        *mut windows_core::BOOL,
16557    ) -> windows_core::HRESULT,
16558    pub SetEnableTrackingPrevention: unsafe extern "system" fn(
16559        *mut core::ffi::c_void,
16560        windows_core::BOOL,
16561    ) -> windows_core::HRESULT,
16562}
16563pub trait ICoreWebView2EnvironmentOptions5_Impl: windows_core::IUnknownImpl {
16564    fn EnableTrackingPrevention(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
16565    fn SetEnableTrackingPrevention(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
16566}
16567impl ICoreWebView2EnvironmentOptions5_Vtbl {
16568    pub const fn new<Identity: ICoreWebView2EnvironmentOptions5_Impl, const OFFSET: isize>() -> Self
16569    {
16570        unsafe extern "system" fn EnableTrackingPrevention<
16571            Identity: ICoreWebView2EnvironmentOptions5_Impl,
16572            const OFFSET: isize,
16573        >(
16574            this: *mut core::ffi::c_void,
16575            value: *mut windows_core::BOOL,
16576        ) -> windows_core::HRESULT {
16577            unsafe {
16578                let this: &Identity =
16579                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16580                ICoreWebView2EnvironmentOptions5_Impl::EnableTrackingPrevention(
16581                    this,
16582                    core::mem::transmute_copy(&value),
16583                )
16584                .into()
16585            }
16586        }
16587        unsafe extern "system" fn SetEnableTrackingPrevention<
16588            Identity: ICoreWebView2EnvironmentOptions5_Impl,
16589            const OFFSET: isize,
16590        >(
16591            this: *mut core::ffi::c_void,
16592            value: windows_core::BOOL,
16593        ) -> windows_core::HRESULT {
16594            unsafe {
16595                let this: &Identity =
16596                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16597                ICoreWebView2EnvironmentOptions5_Impl::SetEnableTrackingPrevention(
16598                    this,
16599                    core::mem::transmute_copy(&value),
16600                )
16601                .into()
16602            }
16603        }
16604        Self {
16605            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16606            EnableTrackingPrevention: EnableTrackingPrevention::<Identity, OFFSET>,
16607            SetEnableTrackingPrevention: SetEnableTrackingPrevention::<Identity, OFFSET>,
16608        }
16609    }
16610    pub fn matches(iid: &windows_core::GUID) -> bool {
16611        iid == &<ICoreWebView2EnvironmentOptions5 as windows_core::Interface>::IID
16612    }
16613}
16614impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions5 {}
16615windows_core::imp::define_interface!(
16616    ICoreWebView2EnvironmentOptions6,
16617    ICoreWebView2EnvironmentOptions6_Vtbl,
16618    0x57d29cc3_c84f_42a0_b0e2_effbd5e179de
16619);
16620windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions6, windows_core::IUnknown);
16621impl ICoreWebView2EnvironmentOptions6 {
16622    pub unsafe fn AreBrowserExtensionsEnabled(
16623        &self,
16624        value: *mut windows_core::BOOL,
16625    ) -> windows_core::Result<()> {
16626        unsafe {
16627            (windows_core::Interface::vtable(self).AreBrowserExtensionsEnabled)(
16628                windows_core::Interface::as_raw(self),
16629                value as _,
16630            )
16631            .ok()
16632        }
16633    }
16634    pub unsafe fn SetAreBrowserExtensionsEnabled(&self, value: bool) -> windows_core::Result<()> {
16635        unsafe {
16636            (windows_core::Interface::vtable(self).SetAreBrowserExtensionsEnabled)(
16637                windows_core::Interface::as_raw(self),
16638                value.into(),
16639            )
16640            .ok()
16641        }
16642    }
16643}
16644#[repr(C)]
16645#[doc(hidden)]
16646pub struct ICoreWebView2EnvironmentOptions6_Vtbl {
16647    pub base__: windows_core::IUnknown_Vtbl,
16648    pub AreBrowserExtensionsEnabled: unsafe extern "system" fn(
16649        *mut core::ffi::c_void,
16650        *mut windows_core::BOOL,
16651    ) -> windows_core::HRESULT,
16652    pub SetAreBrowserExtensionsEnabled: unsafe extern "system" fn(
16653        *mut core::ffi::c_void,
16654        windows_core::BOOL,
16655    ) -> windows_core::HRESULT,
16656}
16657pub trait ICoreWebView2EnvironmentOptions6_Impl: windows_core::IUnknownImpl {
16658    fn AreBrowserExtensionsEnabled(
16659        &self,
16660        value: *mut windows_core::BOOL,
16661    ) -> windows_core::Result<()>;
16662    fn SetAreBrowserExtensionsEnabled(&self, value: windows_core::BOOL)
16663        -> windows_core::Result<()>;
16664}
16665impl ICoreWebView2EnvironmentOptions6_Vtbl {
16666    pub const fn new<Identity: ICoreWebView2EnvironmentOptions6_Impl, const OFFSET: isize>() -> Self
16667    {
16668        unsafe extern "system" fn AreBrowserExtensionsEnabled<
16669            Identity: ICoreWebView2EnvironmentOptions6_Impl,
16670            const OFFSET: isize,
16671        >(
16672            this: *mut core::ffi::c_void,
16673            value: *mut windows_core::BOOL,
16674        ) -> windows_core::HRESULT {
16675            unsafe {
16676                let this: &Identity =
16677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16678                ICoreWebView2EnvironmentOptions6_Impl::AreBrowserExtensionsEnabled(
16679                    this,
16680                    core::mem::transmute_copy(&value),
16681                )
16682                .into()
16683            }
16684        }
16685        unsafe extern "system" fn SetAreBrowserExtensionsEnabled<
16686            Identity: ICoreWebView2EnvironmentOptions6_Impl,
16687            const OFFSET: isize,
16688        >(
16689            this: *mut core::ffi::c_void,
16690            value: windows_core::BOOL,
16691        ) -> windows_core::HRESULT {
16692            unsafe {
16693                let this: &Identity =
16694                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16695                ICoreWebView2EnvironmentOptions6_Impl::SetAreBrowserExtensionsEnabled(
16696                    this,
16697                    core::mem::transmute_copy(&value),
16698                )
16699                .into()
16700            }
16701        }
16702        Self {
16703            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16704            AreBrowserExtensionsEnabled: AreBrowserExtensionsEnabled::<Identity, OFFSET>,
16705            SetAreBrowserExtensionsEnabled: SetAreBrowserExtensionsEnabled::<Identity, OFFSET>,
16706        }
16707    }
16708    pub fn matches(iid: &windows_core::GUID) -> bool {
16709        iid == &<ICoreWebView2EnvironmentOptions6 as windows_core::Interface>::IID
16710    }
16711}
16712impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions6 {}
16713windows_core::imp::define_interface!(
16714    ICoreWebView2EnvironmentOptions7,
16715    ICoreWebView2EnvironmentOptions7_Vtbl,
16716    0xc48d539f_e39f_441c_ae68_1f66e570bdc5
16717);
16718windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions7, windows_core::IUnknown);
16719impl ICoreWebView2EnvironmentOptions7 {
16720    pub unsafe fn ChannelSearchKind(
16721        &self,
16722        value: *mut COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16723    ) -> windows_core::Result<()> {
16724        unsafe {
16725            (windows_core::Interface::vtable(self).ChannelSearchKind)(
16726                windows_core::Interface::as_raw(self),
16727                value as _,
16728            )
16729            .ok()
16730        }
16731    }
16732    pub unsafe fn SetChannelSearchKind(
16733        &self,
16734        value: COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16735    ) -> windows_core::Result<()> {
16736        unsafe {
16737            (windows_core::Interface::vtable(self).SetChannelSearchKind)(
16738                windows_core::Interface::as_raw(self),
16739                value,
16740            )
16741            .ok()
16742        }
16743    }
16744    pub unsafe fn ReleaseChannels(
16745        &self,
16746        value: *mut COREWEBVIEW2_RELEASE_CHANNELS,
16747    ) -> windows_core::Result<()> {
16748        unsafe {
16749            (windows_core::Interface::vtable(self).ReleaseChannels)(
16750                windows_core::Interface::as_raw(self),
16751                value as _,
16752            )
16753            .ok()
16754        }
16755    }
16756    pub unsafe fn SetReleaseChannels(
16757        &self,
16758        value: COREWEBVIEW2_RELEASE_CHANNELS,
16759    ) -> windows_core::Result<()> {
16760        unsafe {
16761            (windows_core::Interface::vtable(self).SetReleaseChannels)(
16762                windows_core::Interface::as_raw(self),
16763                value,
16764            )
16765            .ok()
16766        }
16767    }
16768}
16769#[repr(C)]
16770#[doc(hidden)]
16771pub struct ICoreWebView2EnvironmentOptions7_Vtbl {
16772    pub base__: windows_core::IUnknown_Vtbl,
16773    pub ChannelSearchKind: unsafe extern "system" fn(
16774        *mut core::ffi::c_void,
16775        *mut COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16776    ) -> windows_core::HRESULT,
16777    pub SetChannelSearchKind: unsafe extern "system" fn(
16778        *mut core::ffi::c_void,
16779        COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16780    ) -> windows_core::HRESULT,
16781    pub ReleaseChannels: unsafe extern "system" fn(
16782        *mut core::ffi::c_void,
16783        *mut COREWEBVIEW2_RELEASE_CHANNELS,
16784    ) -> windows_core::HRESULT,
16785    pub SetReleaseChannels: unsafe extern "system" fn(
16786        *mut core::ffi::c_void,
16787        COREWEBVIEW2_RELEASE_CHANNELS,
16788    ) -> windows_core::HRESULT,
16789}
16790pub trait ICoreWebView2EnvironmentOptions7_Impl: windows_core::IUnknownImpl {
16791    fn ChannelSearchKind(
16792        &self,
16793        value: *mut COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16794    ) -> windows_core::Result<()>;
16795    fn SetChannelSearchKind(
16796        &self,
16797        value: COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16798    ) -> windows_core::Result<()>;
16799    fn ReleaseChannels(
16800        &self,
16801        value: *mut COREWEBVIEW2_RELEASE_CHANNELS,
16802    ) -> windows_core::Result<()>;
16803    fn SetReleaseChannels(&self, value: COREWEBVIEW2_RELEASE_CHANNELS) -> windows_core::Result<()>;
16804}
16805impl ICoreWebView2EnvironmentOptions7_Vtbl {
16806    pub const fn new<Identity: ICoreWebView2EnvironmentOptions7_Impl, const OFFSET: isize>() -> Self
16807    {
16808        unsafe extern "system" fn ChannelSearchKind<
16809            Identity: ICoreWebView2EnvironmentOptions7_Impl,
16810            const OFFSET: isize,
16811        >(
16812            this: *mut core::ffi::c_void,
16813            value: *mut COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16814        ) -> windows_core::HRESULT {
16815            unsafe {
16816                let this: &Identity =
16817                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16818                ICoreWebView2EnvironmentOptions7_Impl::ChannelSearchKind(
16819                    this,
16820                    core::mem::transmute_copy(&value),
16821                )
16822                .into()
16823            }
16824        }
16825        unsafe extern "system" fn SetChannelSearchKind<
16826            Identity: ICoreWebView2EnvironmentOptions7_Impl,
16827            const OFFSET: isize,
16828        >(
16829            this: *mut core::ffi::c_void,
16830            value: COREWEBVIEW2_CHANNEL_SEARCH_KIND,
16831        ) -> windows_core::HRESULT {
16832            unsafe {
16833                let this: &Identity =
16834                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16835                ICoreWebView2EnvironmentOptions7_Impl::SetChannelSearchKind(
16836                    this,
16837                    core::mem::transmute_copy(&value),
16838                )
16839                .into()
16840            }
16841        }
16842        unsafe extern "system" fn ReleaseChannels<
16843            Identity: ICoreWebView2EnvironmentOptions7_Impl,
16844            const OFFSET: isize,
16845        >(
16846            this: *mut core::ffi::c_void,
16847            value: *mut COREWEBVIEW2_RELEASE_CHANNELS,
16848        ) -> windows_core::HRESULT {
16849            unsafe {
16850                let this: &Identity =
16851                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16852                ICoreWebView2EnvironmentOptions7_Impl::ReleaseChannels(
16853                    this,
16854                    core::mem::transmute_copy(&value),
16855                )
16856                .into()
16857            }
16858        }
16859        unsafe extern "system" fn SetReleaseChannels<
16860            Identity: ICoreWebView2EnvironmentOptions7_Impl,
16861            const OFFSET: isize,
16862        >(
16863            this: *mut core::ffi::c_void,
16864            value: COREWEBVIEW2_RELEASE_CHANNELS,
16865        ) -> windows_core::HRESULT {
16866            unsafe {
16867                let this: &Identity =
16868                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16869                ICoreWebView2EnvironmentOptions7_Impl::SetReleaseChannels(
16870                    this,
16871                    core::mem::transmute_copy(&value),
16872                )
16873                .into()
16874            }
16875        }
16876        Self {
16877            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16878            ChannelSearchKind: ChannelSearchKind::<Identity, OFFSET>,
16879            SetChannelSearchKind: SetChannelSearchKind::<Identity, OFFSET>,
16880            ReleaseChannels: ReleaseChannels::<Identity, OFFSET>,
16881            SetReleaseChannels: SetReleaseChannels::<Identity, OFFSET>,
16882        }
16883    }
16884    pub fn matches(iid: &windows_core::GUID) -> bool {
16885        iid == &<ICoreWebView2EnvironmentOptions7 as windows_core::Interface>::IID
16886    }
16887}
16888impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions7 {}
16889windows_core::imp::define_interface!(
16890    ICoreWebView2EnvironmentOptions8,
16891    ICoreWebView2EnvironmentOptions8_Vtbl,
16892    0x7c7ecf51_e918_5caf_853c_e9a2bcc27775
16893);
16894windows_core::imp::interface_hierarchy!(ICoreWebView2EnvironmentOptions8, windows_core::IUnknown);
16895impl ICoreWebView2EnvironmentOptions8 {
16896    pub unsafe fn ScrollBarStyle(
16897        &self,
16898        value: *mut COREWEBVIEW2_SCROLLBAR_STYLE,
16899    ) -> windows_core::Result<()> {
16900        unsafe {
16901            (windows_core::Interface::vtable(self).ScrollBarStyle)(
16902                windows_core::Interface::as_raw(self),
16903                value as _,
16904            )
16905            .ok()
16906        }
16907    }
16908    pub unsafe fn SetScrollBarStyle(
16909        &self,
16910        value: COREWEBVIEW2_SCROLLBAR_STYLE,
16911    ) -> windows_core::Result<()> {
16912        unsafe {
16913            (windows_core::Interface::vtable(self).SetScrollBarStyle)(
16914                windows_core::Interface::as_raw(self),
16915                value,
16916            )
16917            .ok()
16918        }
16919    }
16920}
16921#[repr(C)]
16922#[doc(hidden)]
16923pub struct ICoreWebView2EnvironmentOptions8_Vtbl {
16924    pub base__: windows_core::IUnknown_Vtbl,
16925    pub ScrollBarStyle: unsafe extern "system" fn(
16926        *mut core::ffi::c_void,
16927        *mut COREWEBVIEW2_SCROLLBAR_STYLE,
16928    ) -> windows_core::HRESULT,
16929    pub SetScrollBarStyle: unsafe extern "system" fn(
16930        *mut core::ffi::c_void,
16931        COREWEBVIEW2_SCROLLBAR_STYLE,
16932    ) -> windows_core::HRESULT,
16933}
16934pub trait ICoreWebView2EnvironmentOptions8_Impl: windows_core::IUnknownImpl {
16935    fn ScrollBarStyle(&self, value: *mut COREWEBVIEW2_SCROLLBAR_STYLE) -> windows_core::Result<()>;
16936    fn SetScrollBarStyle(&self, value: COREWEBVIEW2_SCROLLBAR_STYLE) -> windows_core::Result<()>;
16937}
16938impl ICoreWebView2EnvironmentOptions8_Vtbl {
16939    pub const fn new<Identity: ICoreWebView2EnvironmentOptions8_Impl, const OFFSET: isize>() -> Self
16940    {
16941        unsafe extern "system" fn ScrollBarStyle<
16942            Identity: ICoreWebView2EnvironmentOptions8_Impl,
16943            const OFFSET: isize,
16944        >(
16945            this: *mut core::ffi::c_void,
16946            value: *mut COREWEBVIEW2_SCROLLBAR_STYLE,
16947        ) -> windows_core::HRESULT {
16948            unsafe {
16949                let this: &Identity =
16950                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16951                ICoreWebView2EnvironmentOptions8_Impl::ScrollBarStyle(
16952                    this,
16953                    core::mem::transmute_copy(&value),
16954                )
16955                .into()
16956            }
16957        }
16958        unsafe extern "system" fn SetScrollBarStyle<
16959            Identity: ICoreWebView2EnvironmentOptions8_Impl,
16960            const OFFSET: isize,
16961        >(
16962            this: *mut core::ffi::c_void,
16963            value: COREWEBVIEW2_SCROLLBAR_STYLE,
16964        ) -> windows_core::HRESULT {
16965            unsafe {
16966                let this: &Identity =
16967                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16968                ICoreWebView2EnvironmentOptions8_Impl::SetScrollBarStyle(
16969                    this,
16970                    core::mem::transmute_copy(&value),
16971                )
16972                .into()
16973            }
16974        }
16975        Self {
16976            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
16977            ScrollBarStyle: ScrollBarStyle::<Identity, OFFSET>,
16978            SetScrollBarStyle: SetScrollBarStyle::<Identity, OFFSET>,
16979        }
16980    }
16981    pub fn matches(iid: &windows_core::GUID) -> bool {
16982        iid == &<ICoreWebView2EnvironmentOptions8 as windows_core::Interface>::IID
16983    }
16984}
16985impl windows_core::RuntimeName for ICoreWebView2EnvironmentOptions8 {}
16986windows_core::imp::define_interface!(
16987    ICoreWebView2EstimatedEndTimeChangedEventHandler,
16988    ICoreWebView2EstimatedEndTimeChangedEventHandler_Vtbl,
16989    0x28f0d425_93fe_4e63_9f8d_2aeec6d3ba1e
16990);
16991windows_core::imp::interface_hierarchy!(
16992    ICoreWebView2EstimatedEndTimeChangedEventHandler,
16993    windows_core::IUnknown
16994);
16995impl ICoreWebView2EstimatedEndTimeChangedEventHandler {
16996    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
16997    where
16998        P0: windows_core::Param<ICoreWebView2DownloadOperation>,
16999        P1: windows_core::Param<windows_core::IUnknown>,
17000    {
17001        unsafe {
17002            (windows_core::Interface::vtable(self).Invoke)(
17003                windows_core::Interface::as_raw(self),
17004                sender.param().abi(),
17005                args.param().abi(),
17006            )
17007            .ok()
17008        }
17009    }
17010}
17011#[repr(C)]
17012#[doc(hidden)]
17013pub struct ICoreWebView2EstimatedEndTimeChangedEventHandler_Vtbl {
17014    pub base__: windows_core::IUnknown_Vtbl,
17015    pub Invoke: unsafe extern "system" fn(
17016        *mut core::ffi::c_void,
17017        *mut core::ffi::c_void,
17018        *mut core::ffi::c_void,
17019    ) -> windows_core::HRESULT,
17020}
17021pub trait ICoreWebView2EstimatedEndTimeChangedEventHandler_Impl:
17022    windows_core::IUnknownImpl
17023{
17024    fn Invoke(
17025        &self,
17026        sender: windows_core::Ref<'_, ICoreWebView2DownloadOperation>,
17027        args: windows_core::Ref<'_, windows_core::IUnknown>,
17028    ) -> windows_core::Result<()>;
17029}
17030impl ICoreWebView2EstimatedEndTimeChangedEventHandler_Vtbl {
17031    pub const fn new<
17032        Identity: ICoreWebView2EstimatedEndTimeChangedEventHandler_Impl,
17033        const OFFSET: isize,
17034    >() -> Self {
17035        unsafe extern "system" fn Invoke<
17036            Identity: ICoreWebView2EstimatedEndTimeChangedEventHandler_Impl,
17037            const OFFSET: isize,
17038        >(
17039            this: *mut core::ffi::c_void,
17040            sender: *mut core::ffi::c_void,
17041            args: *mut core::ffi::c_void,
17042        ) -> windows_core::HRESULT {
17043            unsafe {
17044                let this: &Identity =
17045                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17046                ICoreWebView2EstimatedEndTimeChangedEventHandler_Impl::Invoke(
17047                    this,
17048                    core::mem::transmute_copy(&sender),
17049                    core::mem::transmute_copy(&args),
17050                )
17051                .into()
17052            }
17053        }
17054        Self {
17055            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17056            Invoke: Invoke::<Identity, OFFSET>,
17057        }
17058    }
17059    pub fn matches(iid: &windows_core::GUID) -> bool {
17060        iid == &<ICoreWebView2EstimatedEndTimeChangedEventHandler as windows_core::Interface>::IID
17061    }
17062}
17063impl windows_core::RuntimeName for ICoreWebView2EstimatedEndTimeChangedEventHandler {}
17064windows_core::imp::define_interface!(
17065    ICoreWebView2ExecuteScriptCompletedHandler,
17066    ICoreWebView2ExecuteScriptCompletedHandler_Vtbl,
17067    0x49511172_cc67_4bca_9923_137112f4c4cc
17068);
17069windows_core::imp::interface_hierarchy!(
17070    ICoreWebView2ExecuteScriptCompletedHandler,
17071    windows_core::IUnknown
17072);
17073impl ICoreWebView2ExecuteScriptCompletedHandler {
17074    pub unsafe fn Invoke<P1>(
17075        &self,
17076        errorcode: windows_core::HRESULT,
17077        result: P1,
17078    ) -> windows_core::Result<()>
17079    where
17080        P1: windows_core::Param<windows_core::PCWSTR>,
17081    {
17082        unsafe {
17083            (windows_core::Interface::vtable(self).Invoke)(
17084                windows_core::Interface::as_raw(self),
17085                errorcode,
17086                result.param().abi(),
17087            )
17088            .ok()
17089        }
17090    }
17091}
17092#[repr(C)]
17093#[doc(hidden)]
17094pub struct ICoreWebView2ExecuteScriptCompletedHandler_Vtbl {
17095    pub base__: windows_core::IUnknown_Vtbl,
17096    pub Invoke: unsafe extern "system" fn(
17097        *mut core::ffi::c_void,
17098        windows_core::HRESULT,
17099        windows_core::PCWSTR,
17100    ) -> windows_core::HRESULT,
17101}
17102pub trait ICoreWebView2ExecuteScriptCompletedHandler_Impl: windows_core::IUnknownImpl {
17103    fn Invoke(
17104        &self,
17105        errorcode: windows_core::HRESULT,
17106        result: &windows_core::PCWSTR,
17107    ) -> windows_core::Result<()>;
17108}
17109impl ICoreWebView2ExecuteScriptCompletedHandler_Vtbl {
17110    pub const fn new<
17111        Identity: ICoreWebView2ExecuteScriptCompletedHandler_Impl,
17112        const OFFSET: isize,
17113    >() -> Self {
17114        unsafe extern "system" fn Invoke<
17115            Identity: ICoreWebView2ExecuteScriptCompletedHandler_Impl,
17116            const OFFSET: isize,
17117        >(
17118            this: *mut core::ffi::c_void,
17119            errorcode: windows_core::HRESULT,
17120            result: windows_core::PCWSTR,
17121        ) -> windows_core::HRESULT {
17122            unsafe {
17123                let this: &Identity =
17124                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17125                ICoreWebView2ExecuteScriptCompletedHandler_Impl::Invoke(
17126                    this,
17127                    core::mem::transmute_copy(&errorcode),
17128                    core::mem::transmute(&result),
17129                )
17130                .into()
17131            }
17132        }
17133        Self {
17134            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17135            Invoke: Invoke::<Identity, OFFSET>,
17136        }
17137    }
17138    pub fn matches(iid: &windows_core::GUID) -> bool {
17139        iid == &<ICoreWebView2ExecuteScriptCompletedHandler as windows_core::Interface>::IID
17140    }
17141}
17142impl windows_core::RuntimeName for ICoreWebView2ExecuteScriptCompletedHandler {}
17143windows_core::imp::define_interface!(
17144    ICoreWebView2ExecuteScriptResult,
17145    ICoreWebView2ExecuteScriptResult_Vtbl,
17146    0x0ce15963_3698_4df7_9399_71ed6cdd8c9f
17147);
17148windows_core::imp::interface_hierarchy!(ICoreWebView2ExecuteScriptResult, windows_core::IUnknown);
17149impl ICoreWebView2ExecuteScriptResult {
17150    pub unsafe fn Succeeded(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
17151        unsafe {
17152            (windows_core::Interface::vtable(self).Succeeded)(
17153                windows_core::Interface::as_raw(self),
17154                value as _,
17155            )
17156            .ok()
17157        }
17158    }
17159    pub unsafe fn ResultAsJson(
17160        &self,
17161        jsonresult: *mut windows_core::PWSTR,
17162    ) -> windows_core::Result<()> {
17163        unsafe {
17164            (windows_core::Interface::vtable(self).ResultAsJson)(
17165                windows_core::Interface::as_raw(self),
17166                jsonresult as _,
17167            )
17168            .ok()
17169        }
17170    }
17171    pub unsafe fn TryGetResultAsString(
17172        &self,
17173        stringresult: *mut windows_core::PWSTR,
17174        value: *mut windows_core::BOOL,
17175    ) -> windows_core::Result<()> {
17176        unsafe {
17177            (windows_core::Interface::vtable(self).TryGetResultAsString)(
17178                windows_core::Interface::as_raw(self),
17179                stringresult as _,
17180                value as _,
17181            )
17182            .ok()
17183        }
17184    }
17185    pub unsafe fn Exception(&self) -> windows_core::Result<ICoreWebView2ScriptException> {
17186        unsafe {
17187            let mut result__ = core::mem::zeroed();
17188            (windows_core::Interface::vtable(self).Exception)(
17189                windows_core::Interface::as_raw(self),
17190                &mut result__,
17191            )
17192            .and_then(|| windows_core::Type::from_abi(result__))
17193        }
17194    }
17195}
17196#[repr(C)]
17197#[doc(hidden)]
17198pub struct ICoreWebView2ExecuteScriptResult_Vtbl {
17199    pub base__: windows_core::IUnknown_Vtbl,
17200    pub Succeeded: unsafe extern "system" fn(
17201        *mut core::ffi::c_void,
17202        *mut windows_core::BOOL,
17203    ) -> windows_core::HRESULT,
17204    pub ResultAsJson: unsafe extern "system" fn(
17205        *mut core::ffi::c_void,
17206        *mut windows_core::PWSTR,
17207    ) -> windows_core::HRESULT,
17208    pub TryGetResultAsString: unsafe extern "system" fn(
17209        *mut core::ffi::c_void,
17210        *mut windows_core::PWSTR,
17211        *mut windows_core::BOOL,
17212    ) -> windows_core::HRESULT,
17213    pub Exception: unsafe extern "system" fn(
17214        *mut core::ffi::c_void,
17215        *mut *mut core::ffi::c_void,
17216    ) -> windows_core::HRESULT,
17217}
17218pub trait ICoreWebView2ExecuteScriptResult_Impl: windows_core::IUnknownImpl {
17219    fn Succeeded(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
17220    fn ResultAsJson(&self, jsonresult: *mut windows_core::PWSTR) -> windows_core::Result<()>;
17221    fn TryGetResultAsString(
17222        &self,
17223        stringresult: *mut windows_core::PWSTR,
17224        value: *mut windows_core::BOOL,
17225    ) -> windows_core::Result<()>;
17226    fn Exception(&self) -> windows_core::Result<ICoreWebView2ScriptException>;
17227}
17228impl ICoreWebView2ExecuteScriptResult_Vtbl {
17229    pub const fn new<Identity: ICoreWebView2ExecuteScriptResult_Impl, const OFFSET: isize>() -> Self
17230    {
17231        unsafe extern "system" fn Succeeded<
17232            Identity: ICoreWebView2ExecuteScriptResult_Impl,
17233            const OFFSET: isize,
17234        >(
17235            this: *mut core::ffi::c_void,
17236            value: *mut windows_core::BOOL,
17237        ) -> windows_core::HRESULT {
17238            unsafe {
17239                let this: &Identity =
17240                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17241                ICoreWebView2ExecuteScriptResult_Impl::Succeeded(
17242                    this,
17243                    core::mem::transmute_copy(&value),
17244                )
17245                .into()
17246            }
17247        }
17248        unsafe extern "system" fn ResultAsJson<
17249            Identity: ICoreWebView2ExecuteScriptResult_Impl,
17250            const OFFSET: isize,
17251        >(
17252            this: *mut core::ffi::c_void,
17253            jsonresult: *mut windows_core::PWSTR,
17254        ) -> windows_core::HRESULT {
17255            unsafe {
17256                let this: &Identity =
17257                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17258                ICoreWebView2ExecuteScriptResult_Impl::ResultAsJson(
17259                    this,
17260                    core::mem::transmute_copy(&jsonresult),
17261                )
17262                .into()
17263            }
17264        }
17265        unsafe extern "system" fn TryGetResultAsString<
17266            Identity: ICoreWebView2ExecuteScriptResult_Impl,
17267            const OFFSET: isize,
17268        >(
17269            this: *mut core::ffi::c_void,
17270            stringresult: *mut windows_core::PWSTR,
17271            value: *mut windows_core::BOOL,
17272        ) -> windows_core::HRESULT {
17273            unsafe {
17274                let this: &Identity =
17275                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17276                ICoreWebView2ExecuteScriptResult_Impl::TryGetResultAsString(
17277                    this,
17278                    core::mem::transmute_copy(&stringresult),
17279                    core::mem::transmute_copy(&value),
17280                )
17281                .into()
17282            }
17283        }
17284        unsafe extern "system" fn Exception<
17285            Identity: ICoreWebView2ExecuteScriptResult_Impl,
17286            const OFFSET: isize,
17287        >(
17288            this: *mut core::ffi::c_void,
17289            exception: *mut *mut core::ffi::c_void,
17290        ) -> windows_core::HRESULT {
17291            unsafe {
17292                let this: &Identity =
17293                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17294                match ICoreWebView2ExecuteScriptResult_Impl::Exception(this) {
17295                    Ok(ok__) => {
17296                        exception.write(core::mem::transmute(ok__));
17297                        windows_core::HRESULT(0)
17298                    }
17299                    Err(err) => err.into(),
17300                }
17301            }
17302        }
17303        Self {
17304            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17305            Succeeded: Succeeded::<Identity, OFFSET>,
17306            ResultAsJson: ResultAsJson::<Identity, OFFSET>,
17307            TryGetResultAsString: TryGetResultAsString::<Identity, OFFSET>,
17308            Exception: Exception::<Identity, OFFSET>,
17309        }
17310    }
17311    pub fn matches(iid: &windows_core::GUID) -> bool {
17312        iid == &<ICoreWebView2ExecuteScriptResult as windows_core::Interface>::IID
17313    }
17314}
17315impl windows_core::RuntimeName for ICoreWebView2ExecuteScriptResult {}
17316windows_core::imp::define_interface!(
17317    ICoreWebView2ExecuteScriptWithResultCompletedHandler,
17318    ICoreWebView2ExecuteScriptWithResultCompletedHandler_Vtbl,
17319    0x1bb5317b_8238_4c67_a7ff_baf6558f289d
17320);
17321windows_core::imp::interface_hierarchy!(
17322    ICoreWebView2ExecuteScriptWithResultCompletedHandler,
17323    windows_core::IUnknown
17324);
17325impl ICoreWebView2ExecuteScriptWithResultCompletedHandler {
17326    pub unsafe fn Invoke<P1>(
17327        &self,
17328        errorcode: windows_core::HRESULT,
17329        result: P1,
17330    ) -> windows_core::Result<()>
17331    where
17332        P1: windows_core::Param<ICoreWebView2ExecuteScriptResult>,
17333    {
17334        unsafe {
17335            (windows_core::Interface::vtable(self).Invoke)(
17336                windows_core::Interface::as_raw(self),
17337                errorcode,
17338                result.param().abi(),
17339            )
17340            .ok()
17341        }
17342    }
17343}
17344#[repr(C)]
17345#[doc(hidden)]
17346pub struct ICoreWebView2ExecuteScriptWithResultCompletedHandler_Vtbl {
17347    pub base__: windows_core::IUnknown_Vtbl,
17348    pub Invoke: unsafe extern "system" fn(
17349        *mut core::ffi::c_void,
17350        windows_core::HRESULT,
17351        *mut core::ffi::c_void,
17352    ) -> windows_core::HRESULT,
17353}
17354pub trait ICoreWebView2ExecuteScriptWithResultCompletedHandler_Impl:
17355    windows_core::IUnknownImpl
17356{
17357    fn Invoke(
17358        &self,
17359        errorcode: windows_core::HRESULT,
17360        result: windows_core::Ref<'_, ICoreWebView2ExecuteScriptResult>,
17361    ) -> windows_core::Result<()>;
17362}
17363impl ICoreWebView2ExecuteScriptWithResultCompletedHandler_Vtbl {
17364    pub const fn new<
17365        Identity: ICoreWebView2ExecuteScriptWithResultCompletedHandler_Impl,
17366        const OFFSET: isize,
17367    >() -> Self {
17368        unsafe extern "system" fn Invoke<
17369            Identity: ICoreWebView2ExecuteScriptWithResultCompletedHandler_Impl,
17370            const OFFSET: isize,
17371        >(
17372            this: *mut core::ffi::c_void,
17373            errorcode: windows_core::HRESULT,
17374            result: *mut core::ffi::c_void,
17375        ) -> windows_core::HRESULT {
17376            unsafe {
17377                let this: &Identity =
17378                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17379                ICoreWebView2ExecuteScriptWithResultCompletedHandler_Impl::Invoke(
17380                    this,
17381                    core::mem::transmute_copy(&errorcode),
17382                    core::mem::transmute_copy(&result),
17383                )
17384                .into()
17385            }
17386        }
17387        Self {
17388            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17389            Invoke: Invoke::<Identity, OFFSET>,
17390        }
17391    }
17392    pub fn matches(iid: &windows_core::GUID) -> bool {
17393        iid == & < ICoreWebView2ExecuteScriptWithResultCompletedHandler as windows_core::Interface >::IID
17394    }
17395}
17396impl windows_core::RuntimeName for ICoreWebView2ExecuteScriptWithResultCompletedHandler {}
17397windows_core::imp::define_interface!(
17398    ICoreWebView2FaviconChangedEventHandler,
17399    ICoreWebView2FaviconChangedEventHandler_Vtbl,
17400    0x2913da94_833d_4de0_8dca_900fc524a1a4
17401);
17402windows_core::imp::interface_hierarchy!(
17403    ICoreWebView2FaviconChangedEventHandler,
17404    windows_core::IUnknown
17405);
17406impl ICoreWebView2FaviconChangedEventHandler {
17407    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
17408    where
17409        P0: windows_core::Param<ICoreWebView2>,
17410        P1: windows_core::Param<windows_core::IUnknown>,
17411    {
17412        unsafe {
17413            (windows_core::Interface::vtable(self).Invoke)(
17414                windows_core::Interface::as_raw(self),
17415                sender.param().abi(),
17416                args.param().abi(),
17417            )
17418            .ok()
17419        }
17420    }
17421}
17422#[repr(C)]
17423#[doc(hidden)]
17424pub struct ICoreWebView2FaviconChangedEventHandler_Vtbl {
17425    pub base__: windows_core::IUnknown_Vtbl,
17426    pub Invoke: unsafe extern "system" fn(
17427        *mut core::ffi::c_void,
17428        *mut core::ffi::c_void,
17429        *mut core::ffi::c_void,
17430    ) -> windows_core::HRESULT,
17431}
17432pub trait ICoreWebView2FaviconChangedEventHandler_Impl: windows_core::IUnknownImpl {
17433    fn Invoke(
17434        &self,
17435        sender: windows_core::Ref<'_, ICoreWebView2>,
17436        args: windows_core::Ref<'_, windows_core::IUnknown>,
17437    ) -> windows_core::Result<()>;
17438}
17439impl ICoreWebView2FaviconChangedEventHandler_Vtbl {
17440    pub const fn new<
17441        Identity: ICoreWebView2FaviconChangedEventHandler_Impl,
17442        const OFFSET: isize,
17443    >() -> Self {
17444        unsafe extern "system" fn Invoke<
17445            Identity: ICoreWebView2FaviconChangedEventHandler_Impl,
17446            const OFFSET: isize,
17447        >(
17448            this: *mut core::ffi::c_void,
17449            sender: *mut core::ffi::c_void,
17450            args: *mut core::ffi::c_void,
17451        ) -> windows_core::HRESULT {
17452            unsafe {
17453                let this: &Identity =
17454                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17455                ICoreWebView2FaviconChangedEventHandler_Impl::Invoke(
17456                    this,
17457                    core::mem::transmute_copy(&sender),
17458                    core::mem::transmute_copy(&args),
17459                )
17460                .into()
17461            }
17462        }
17463        Self {
17464            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17465            Invoke: Invoke::<Identity, OFFSET>,
17466        }
17467    }
17468    pub fn matches(iid: &windows_core::GUID) -> bool {
17469        iid == &<ICoreWebView2FaviconChangedEventHandler as windows_core::Interface>::IID
17470    }
17471}
17472impl windows_core::RuntimeName for ICoreWebView2FaviconChangedEventHandler {}
17473windows_core::imp::define_interface!(
17474    ICoreWebView2File,
17475    ICoreWebView2File_Vtbl,
17476    0xf2c19559_6bc1_4583_a757_90021be9afec
17477);
17478windows_core::imp::interface_hierarchy!(ICoreWebView2File, windows_core::IUnknown);
17479impl ICoreWebView2File {
17480    pub unsafe fn Path(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
17481        unsafe {
17482            (windows_core::Interface::vtable(self).Path)(
17483                windows_core::Interface::as_raw(self),
17484                value as _,
17485            )
17486            .ok()
17487        }
17488    }
17489}
17490#[repr(C)]
17491#[doc(hidden)]
17492pub struct ICoreWebView2File_Vtbl {
17493    pub base__: windows_core::IUnknown_Vtbl,
17494    pub Path: unsafe extern "system" fn(
17495        *mut core::ffi::c_void,
17496        *mut windows_core::PWSTR,
17497    ) -> windows_core::HRESULT,
17498}
17499pub trait ICoreWebView2File_Impl: windows_core::IUnknownImpl {
17500    fn Path(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
17501}
17502impl ICoreWebView2File_Vtbl {
17503    pub const fn new<Identity: ICoreWebView2File_Impl, const OFFSET: isize>() -> Self {
17504        unsafe extern "system" fn Path<Identity: ICoreWebView2File_Impl, const OFFSET: isize>(
17505            this: *mut core::ffi::c_void,
17506            value: *mut windows_core::PWSTR,
17507        ) -> windows_core::HRESULT {
17508            unsafe {
17509                let this: &Identity =
17510                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17511                ICoreWebView2File_Impl::Path(this, core::mem::transmute_copy(&value)).into()
17512            }
17513        }
17514        Self {
17515            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17516            Path: Path::<Identity, OFFSET>,
17517        }
17518    }
17519    pub fn matches(iid: &windows_core::GUID) -> bool {
17520        iid == &<ICoreWebView2File as windows_core::Interface>::IID
17521    }
17522}
17523impl windows_core::RuntimeName for ICoreWebView2File {}
17524windows_core::imp::define_interface!(
17525    ICoreWebView2FileSystemHandle,
17526    ICoreWebView2FileSystemHandle_Vtbl,
17527    0xc65100ac_0de2_5551_a362_23d9bd1d0e1f
17528);
17529windows_core::imp::interface_hierarchy!(ICoreWebView2FileSystemHandle, windows_core::IUnknown);
17530impl ICoreWebView2FileSystemHandle {
17531    pub unsafe fn Kind(
17532        &self,
17533        value: *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND,
17534    ) -> windows_core::Result<()> {
17535        unsafe {
17536            (windows_core::Interface::vtable(self).Kind)(
17537                windows_core::Interface::as_raw(self),
17538                value as _,
17539            )
17540            .ok()
17541        }
17542    }
17543    pub unsafe fn Path(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
17544        unsafe {
17545            (windows_core::Interface::vtable(self).Path)(
17546                windows_core::Interface::as_raw(self),
17547                value as _,
17548            )
17549            .ok()
17550        }
17551    }
17552    pub unsafe fn Permission(
17553        &self,
17554        value: *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
17555    ) -> windows_core::Result<()> {
17556        unsafe {
17557            (windows_core::Interface::vtable(self).Permission)(
17558                windows_core::Interface::as_raw(self),
17559                value as _,
17560            )
17561            .ok()
17562        }
17563    }
17564}
17565#[repr(C)]
17566#[doc(hidden)]
17567pub struct ICoreWebView2FileSystemHandle_Vtbl {
17568    pub base__: windows_core::IUnknown_Vtbl,
17569    pub Kind: unsafe extern "system" fn(
17570        *mut core::ffi::c_void,
17571        *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND,
17572    ) -> windows_core::HRESULT,
17573    pub Path: unsafe extern "system" fn(
17574        *mut core::ffi::c_void,
17575        *mut windows_core::PWSTR,
17576    ) -> windows_core::HRESULT,
17577    pub Permission: unsafe extern "system" fn(
17578        *mut core::ffi::c_void,
17579        *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
17580    ) -> windows_core::HRESULT,
17581}
17582pub trait ICoreWebView2FileSystemHandle_Impl: windows_core::IUnknownImpl {
17583    fn Kind(&self, value: *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND) -> windows_core::Result<()>;
17584    fn Path(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
17585    fn Permission(
17586        &self,
17587        value: *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
17588    ) -> windows_core::Result<()>;
17589}
17590impl ICoreWebView2FileSystemHandle_Vtbl {
17591    pub const fn new<Identity: ICoreWebView2FileSystemHandle_Impl, const OFFSET: isize>() -> Self {
17592        unsafe extern "system" fn Kind<
17593            Identity: ICoreWebView2FileSystemHandle_Impl,
17594            const OFFSET: isize,
17595        >(
17596            this: *mut core::ffi::c_void,
17597            value: *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND,
17598        ) -> windows_core::HRESULT {
17599            unsafe {
17600                let this: &Identity =
17601                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17602                ICoreWebView2FileSystemHandle_Impl::Kind(this, core::mem::transmute_copy(&value))
17603                    .into()
17604            }
17605        }
17606        unsafe extern "system" fn Path<
17607            Identity: ICoreWebView2FileSystemHandle_Impl,
17608            const OFFSET: isize,
17609        >(
17610            this: *mut core::ffi::c_void,
17611            value: *mut windows_core::PWSTR,
17612        ) -> windows_core::HRESULT {
17613            unsafe {
17614                let this: &Identity =
17615                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17616                ICoreWebView2FileSystemHandle_Impl::Path(this, core::mem::transmute_copy(&value))
17617                    .into()
17618            }
17619        }
17620        unsafe extern "system" fn Permission<
17621            Identity: ICoreWebView2FileSystemHandle_Impl,
17622            const OFFSET: isize,
17623        >(
17624            this: *mut core::ffi::c_void,
17625            value: *mut COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION,
17626        ) -> windows_core::HRESULT {
17627            unsafe {
17628                let this: &Identity =
17629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17630                ICoreWebView2FileSystemHandle_Impl::Permission(
17631                    this,
17632                    core::mem::transmute_copy(&value),
17633                )
17634                .into()
17635            }
17636        }
17637        Self {
17638            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17639            Kind: Kind::<Identity, OFFSET>,
17640            Path: Path::<Identity, OFFSET>,
17641            Permission: Permission::<Identity, OFFSET>,
17642        }
17643    }
17644    pub fn matches(iid: &windows_core::GUID) -> bool {
17645        iid == &<ICoreWebView2FileSystemHandle as windows_core::Interface>::IID
17646    }
17647}
17648impl windows_core::RuntimeName for ICoreWebView2FileSystemHandle {}
17649windows_core::imp::define_interface!(
17650    ICoreWebView2FocusChangedEventHandler,
17651    ICoreWebView2FocusChangedEventHandler_Vtbl,
17652    0x05ea24bd_6452_4926_9014_4b82b498135d
17653);
17654windows_core::imp::interface_hierarchy!(
17655    ICoreWebView2FocusChangedEventHandler,
17656    windows_core::IUnknown
17657);
17658impl ICoreWebView2FocusChangedEventHandler {
17659    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
17660    where
17661        P0: windows_core::Param<ICoreWebView2Controller>,
17662        P1: windows_core::Param<windows_core::IUnknown>,
17663    {
17664        unsafe {
17665            (windows_core::Interface::vtable(self).Invoke)(
17666                windows_core::Interface::as_raw(self),
17667                sender.param().abi(),
17668                args.param().abi(),
17669            )
17670            .ok()
17671        }
17672    }
17673}
17674#[repr(C)]
17675#[doc(hidden)]
17676pub struct ICoreWebView2FocusChangedEventHandler_Vtbl {
17677    pub base__: windows_core::IUnknown_Vtbl,
17678    pub Invoke: unsafe extern "system" fn(
17679        *mut core::ffi::c_void,
17680        *mut core::ffi::c_void,
17681        *mut core::ffi::c_void,
17682    ) -> windows_core::HRESULT,
17683}
17684pub trait ICoreWebView2FocusChangedEventHandler_Impl: windows_core::IUnknownImpl {
17685    fn Invoke(
17686        &self,
17687        sender: windows_core::Ref<'_, ICoreWebView2Controller>,
17688        args: windows_core::Ref<'_, windows_core::IUnknown>,
17689    ) -> windows_core::Result<()>;
17690}
17691impl ICoreWebView2FocusChangedEventHandler_Vtbl {
17692    pub const fn new<Identity: ICoreWebView2FocusChangedEventHandler_Impl, const OFFSET: isize>(
17693    ) -> Self {
17694        unsafe extern "system" fn Invoke<
17695            Identity: ICoreWebView2FocusChangedEventHandler_Impl,
17696            const OFFSET: isize,
17697        >(
17698            this: *mut core::ffi::c_void,
17699            sender: *mut core::ffi::c_void,
17700            args: *mut core::ffi::c_void,
17701        ) -> windows_core::HRESULT {
17702            unsafe {
17703                let this: &Identity =
17704                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17705                ICoreWebView2FocusChangedEventHandler_Impl::Invoke(
17706                    this,
17707                    core::mem::transmute_copy(&sender),
17708                    core::mem::transmute_copy(&args),
17709                )
17710                .into()
17711            }
17712        }
17713        Self {
17714            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17715            Invoke: Invoke::<Identity, OFFSET>,
17716        }
17717    }
17718    pub fn matches(iid: &windows_core::GUID) -> bool {
17719        iid == &<ICoreWebView2FocusChangedEventHandler as windows_core::Interface>::IID
17720    }
17721}
17722impl windows_core::RuntimeName for ICoreWebView2FocusChangedEventHandler {}
17723windows_core::imp::define_interface!(
17724    ICoreWebView2Frame,
17725    ICoreWebView2Frame_Vtbl,
17726    0xf1131a5e_9ba9_11eb_a8b3_0242ac130003
17727);
17728windows_core::imp::interface_hierarchy!(ICoreWebView2Frame, windows_core::IUnknown);
17729impl ICoreWebView2Frame {
17730    pub unsafe fn Name(&self, name: *mut windows_core::PWSTR) -> windows_core::Result<()> {
17731        unsafe {
17732            (windows_core::Interface::vtable(self).Name)(
17733                windows_core::Interface::as_raw(self),
17734                name as _,
17735            )
17736            .ok()
17737        }
17738    }
17739    pub unsafe fn add_NameChanged<P0>(
17740        &self,
17741        eventhandler: P0,
17742        token: *mut i64,
17743    ) -> windows_core::Result<()>
17744    where
17745        P0: windows_core::Param<ICoreWebView2FrameNameChangedEventHandler>,
17746    {
17747        unsafe {
17748            (windows_core::Interface::vtable(self).add_NameChanged)(
17749                windows_core::Interface::as_raw(self),
17750                eventhandler.param().abi(),
17751                token as _,
17752            )
17753            .ok()
17754        }
17755    }
17756    pub unsafe fn remove_NameChanged(&self, token: i64) -> windows_core::Result<()> {
17757        unsafe {
17758            (windows_core::Interface::vtable(self).remove_NameChanged)(
17759                windows_core::Interface::as_raw(self),
17760                token,
17761            )
17762            .ok()
17763        }
17764    }
17765    pub unsafe fn AddHostObjectToScriptWithOrigins<P0>(
17766        &self,
17767        name: P0,
17768        object: *mut windows::Win32::System::Variant::VARIANT,
17769        originscount: u32,
17770        origins: *const windows_core::PCWSTR,
17771    ) -> windows_core::Result<()>
17772    where
17773        P0: windows_core::Param<windows_core::PCWSTR>,
17774    {
17775        unsafe {
17776            (windows_core::Interface::vtable(self).AddHostObjectToScriptWithOrigins)(
17777                windows_core::Interface::as_raw(self),
17778                name.param().abi(),
17779                core::mem::transmute(object),
17780                originscount,
17781                origins,
17782            )
17783            .ok()
17784        }
17785    }
17786    pub unsafe fn RemoveHostObjectFromScript<P0>(&self, name: P0) -> windows_core::Result<()>
17787    where
17788        P0: windows_core::Param<windows_core::PCWSTR>,
17789    {
17790        unsafe {
17791            (windows_core::Interface::vtable(self).RemoveHostObjectFromScript)(
17792                windows_core::Interface::as_raw(self),
17793                name.param().abi(),
17794            )
17795            .ok()
17796        }
17797    }
17798    pub unsafe fn add_Destroyed<P0>(
17799        &self,
17800        eventhandler: P0,
17801        token: *mut i64,
17802    ) -> windows_core::Result<()>
17803    where
17804        P0: windows_core::Param<ICoreWebView2FrameDestroyedEventHandler>,
17805    {
17806        unsafe {
17807            (windows_core::Interface::vtable(self).add_Destroyed)(
17808                windows_core::Interface::as_raw(self),
17809                eventhandler.param().abi(),
17810                token as _,
17811            )
17812            .ok()
17813        }
17814    }
17815    pub unsafe fn remove_Destroyed(&self, token: i64) -> windows_core::Result<()> {
17816        unsafe {
17817            (windows_core::Interface::vtable(self).remove_Destroyed)(
17818                windows_core::Interface::as_raw(self),
17819                token,
17820            )
17821            .ok()
17822        }
17823    }
17824    pub unsafe fn IsDestroyed(
17825        &self,
17826        destroyed: *mut windows_core::BOOL,
17827    ) -> windows_core::Result<()> {
17828        unsafe {
17829            (windows_core::Interface::vtable(self).IsDestroyed)(
17830                windows_core::Interface::as_raw(self),
17831                destroyed as _,
17832            )
17833            .ok()
17834        }
17835    }
17836}
17837#[repr(C)]
17838#[doc(hidden)]
17839pub struct ICoreWebView2Frame_Vtbl {
17840    pub base__: windows_core::IUnknown_Vtbl,
17841    pub Name: unsafe extern "system" fn(
17842        *mut core::ffi::c_void,
17843        *mut windows_core::PWSTR,
17844    ) -> windows_core::HRESULT,
17845    pub add_NameChanged: unsafe extern "system" fn(
17846        *mut core::ffi::c_void,
17847        *mut core::ffi::c_void,
17848        *mut i64,
17849    ) -> windows_core::HRESULT,
17850    pub remove_NameChanged:
17851        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
17852    pub AddHostObjectToScriptWithOrigins: unsafe extern "system" fn(
17853        *mut core::ffi::c_void,
17854        windows_core::PCWSTR,
17855        *mut windows::Win32::System::Variant::VARIANT,
17856        u32,
17857        *const windows_core::PCWSTR,
17858    ) -> windows_core::HRESULT,
17859    pub RemoveHostObjectFromScript: unsafe extern "system" fn(
17860        *mut core::ffi::c_void,
17861        windows_core::PCWSTR,
17862    ) -> windows_core::HRESULT,
17863    pub add_Destroyed: unsafe extern "system" fn(
17864        *mut core::ffi::c_void,
17865        *mut core::ffi::c_void,
17866        *mut i64,
17867    ) -> windows_core::HRESULT,
17868    pub remove_Destroyed:
17869        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
17870    pub IsDestroyed: unsafe extern "system" fn(
17871        *mut core::ffi::c_void,
17872        *mut windows_core::BOOL,
17873    ) -> windows_core::HRESULT,
17874}
17875pub trait ICoreWebView2Frame_Impl: windows_core::IUnknownImpl {
17876    fn Name(&self, name: *mut windows_core::PWSTR) -> windows_core::Result<()>;
17877    fn add_NameChanged(
17878        &self,
17879        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameNameChangedEventHandler>,
17880        token: *mut i64,
17881    ) -> windows_core::Result<()>;
17882    fn remove_NameChanged(&self, token: i64) -> windows_core::Result<()>;
17883    fn AddHostObjectToScriptWithOrigins(
17884        &self,
17885        name: &windows_core::PCWSTR,
17886        object: *mut windows::Win32::System::Variant::VARIANT,
17887        originscount: u32,
17888        origins: *const windows_core::PCWSTR,
17889    ) -> windows_core::Result<()>;
17890    fn RemoveHostObjectFromScript(&self, name: &windows_core::PCWSTR) -> windows_core::Result<()>;
17891    fn add_Destroyed(
17892        &self,
17893        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameDestroyedEventHandler>,
17894        token: *mut i64,
17895    ) -> windows_core::Result<()>;
17896    fn remove_Destroyed(&self, token: i64) -> windows_core::Result<()>;
17897    fn IsDestroyed(&self, destroyed: *mut windows_core::BOOL) -> windows_core::Result<()>;
17898}
17899impl ICoreWebView2Frame_Vtbl {
17900    pub const fn new<Identity: ICoreWebView2Frame_Impl, const OFFSET: isize>() -> Self {
17901        unsafe extern "system" fn Name<Identity: ICoreWebView2Frame_Impl, const OFFSET: isize>(
17902            this: *mut core::ffi::c_void,
17903            name: *mut windows_core::PWSTR,
17904        ) -> windows_core::HRESULT {
17905            unsafe {
17906                let this: &Identity =
17907                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17908                ICoreWebView2Frame_Impl::Name(this, core::mem::transmute_copy(&name)).into()
17909            }
17910        }
17911        unsafe extern "system" fn add_NameChanged<
17912            Identity: ICoreWebView2Frame_Impl,
17913            const OFFSET: isize,
17914        >(
17915            this: *mut core::ffi::c_void,
17916            eventhandler: *mut core::ffi::c_void,
17917            token: *mut i64,
17918        ) -> windows_core::HRESULT {
17919            unsafe {
17920                let this: &Identity =
17921                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17922                ICoreWebView2Frame_Impl::add_NameChanged(
17923                    this,
17924                    core::mem::transmute_copy(&eventhandler),
17925                    core::mem::transmute_copy(&token),
17926                )
17927                .into()
17928            }
17929        }
17930        unsafe extern "system" fn remove_NameChanged<
17931            Identity: ICoreWebView2Frame_Impl,
17932            const OFFSET: isize,
17933        >(
17934            this: *mut core::ffi::c_void,
17935            token: i64,
17936        ) -> windows_core::HRESULT {
17937            unsafe {
17938                let this: &Identity =
17939                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17940                ICoreWebView2Frame_Impl::remove_NameChanged(this, core::mem::transmute_copy(&token))
17941                    .into()
17942            }
17943        }
17944        unsafe extern "system" fn AddHostObjectToScriptWithOrigins<
17945            Identity: ICoreWebView2Frame_Impl,
17946            const OFFSET: isize,
17947        >(
17948            this: *mut core::ffi::c_void,
17949            name: windows_core::PCWSTR,
17950            object: *mut windows::Win32::System::Variant::VARIANT,
17951            originscount: u32,
17952            origins: *const windows_core::PCWSTR,
17953        ) -> windows_core::HRESULT {
17954            unsafe {
17955                let this: &Identity =
17956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17957                ICoreWebView2Frame_Impl::AddHostObjectToScriptWithOrigins(
17958                    this,
17959                    core::mem::transmute(&name),
17960                    core::mem::transmute_copy(&object),
17961                    core::mem::transmute_copy(&originscount),
17962                    core::mem::transmute_copy(&origins),
17963                )
17964                .into()
17965            }
17966        }
17967        unsafe extern "system" fn RemoveHostObjectFromScript<
17968            Identity: ICoreWebView2Frame_Impl,
17969            const OFFSET: isize,
17970        >(
17971            this: *mut core::ffi::c_void,
17972            name: windows_core::PCWSTR,
17973        ) -> windows_core::HRESULT {
17974            unsafe {
17975                let this: &Identity =
17976                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17977                ICoreWebView2Frame_Impl::RemoveHostObjectFromScript(
17978                    this,
17979                    core::mem::transmute(&name),
17980                )
17981                .into()
17982            }
17983        }
17984        unsafe extern "system" fn add_Destroyed<
17985            Identity: ICoreWebView2Frame_Impl,
17986            const OFFSET: isize,
17987        >(
17988            this: *mut core::ffi::c_void,
17989            eventhandler: *mut core::ffi::c_void,
17990            token: *mut i64,
17991        ) -> windows_core::HRESULT {
17992            unsafe {
17993                let this: &Identity =
17994                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17995                ICoreWebView2Frame_Impl::add_Destroyed(
17996                    this,
17997                    core::mem::transmute_copy(&eventhandler),
17998                    core::mem::transmute_copy(&token),
17999                )
18000                .into()
18001            }
18002        }
18003        unsafe extern "system" fn remove_Destroyed<
18004            Identity: ICoreWebView2Frame_Impl,
18005            const OFFSET: isize,
18006        >(
18007            this: *mut core::ffi::c_void,
18008            token: i64,
18009        ) -> windows_core::HRESULT {
18010            unsafe {
18011                let this: &Identity =
18012                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18013                ICoreWebView2Frame_Impl::remove_Destroyed(this, core::mem::transmute_copy(&token))
18014                    .into()
18015            }
18016        }
18017        unsafe extern "system" fn IsDestroyed<
18018            Identity: ICoreWebView2Frame_Impl,
18019            const OFFSET: isize,
18020        >(
18021            this: *mut core::ffi::c_void,
18022            destroyed: *mut windows_core::BOOL,
18023        ) -> windows_core::HRESULT {
18024            unsafe {
18025                let this: &Identity =
18026                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18027                ICoreWebView2Frame_Impl::IsDestroyed(this, core::mem::transmute_copy(&destroyed))
18028                    .into()
18029            }
18030        }
18031        Self {
18032            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
18033            Name: Name::<Identity, OFFSET>,
18034            add_NameChanged: add_NameChanged::<Identity, OFFSET>,
18035            remove_NameChanged: remove_NameChanged::<Identity, OFFSET>,
18036            AddHostObjectToScriptWithOrigins: AddHostObjectToScriptWithOrigins::<Identity, OFFSET>,
18037            RemoveHostObjectFromScript: RemoveHostObjectFromScript::<Identity, OFFSET>,
18038            add_Destroyed: add_Destroyed::<Identity, OFFSET>,
18039            remove_Destroyed: remove_Destroyed::<Identity, OFFSET>,
18040            IsDestroyed: IsDestroyed::<Identity, OFFSET>,
18041        }
18042    }
18043    pub fn matches(iid: &windows_core::GUID) -> bool {
18044        iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
18045    }
18046}
18047impl windows_core::RuntimeName for ICoreWebView2Frame {}
18048windows_core::imp::define_interface!(
18049    ICoreWebView2Frame2,
18050    ICoreWebView2Frame2_Vtbl,
18051    0x7a6a5834_d185_4dbf_b63f_4a9bc43107d4
18052);
18053impl core::ops::Deref for ICoreWebView2Frame2 {
18054    type Target = ICoreWebView2Frame;
18055    fn deref(&self) -> &Self::Target {
18056        unsafe { core::mem::transmute(self) }
18057    }
18058}
18059windows_core::imp::interface_hierarchy!(
18060    ICoreWebView2Frame2,
18061    windows_core::IUnknown,
18062    ICoreWebView2Frame
18063);
18064impl ICoreWebView2Frame2 {
18065    pub unsafe fn add_NavigationStarting<P0>(
18066        &self,
18067        eventhandler: P0,
18068        token: *mut i64,
18069    ) -> windows_core::Result<()>
18070    where
18071        P0: windows_core::Param<ICoreWebView2FrameNavigationStartingEventHandler>,
18072    {
18073        unsafe {
18074            (windows_core::Interface::vtable(self).add_NavigationStarting)(
18075                windows_core::Interface::as_raw(self),
18076                eventhandler.param().abi(),
18077                token as _,
18078            )
18079            .ok()
18080        }
18081    }
18082    pub unsafe fn remove_NavigationStarting(&self, token: i64) -> windows_core::Result<()> {
18083        unsafe {
18084            (windows_core::Interface::vtable(self).remove_NavigationStarting)(
18085                windows_core::Interface::as_raw(self),
18086                token,
18087            )
18088            .ok()
18089        }
18090    }
18091    pub unsafe fn add_ContentLoading<P0>(
18092        &self,
18093        eventhandler: P0,
18094        token: *mut i64,
18095    ) -> windows_core::Result<()>
18096    where
18097        P0: windows_core::Param<ICoreWebView2FrameContentLoadingEventHandler>,
18098    {
18099        unsafe {
18100            (windows_core::Interface::vtable(self).add_ContentLoading)(
18101                windows_core::Interface::as_raw(self),
18102                eventhandler.param().abi(),
18103                token as _,
18104            )
18105            .ok()
18106        }
18107    }
18108    pub unsafe fn remove_ContentLoading(&self, token: i64) -> windows_core::Result<()> {
18109        unsafe {
18110            (windows_core::Interface::vtable(self).remove_ContentLoading)(
18111                windows_core::Interface::as_raw(self),
18112                token,
18113            )
18114            .ok()
18115        }
18116    }
18117    pub unsafe fn add_NavigationCompleted<P0>(
18118        &self,
18119        eventhandler: P0,
18120        token: *mut i64,
18121    ) -> windows_core::Result<()>
18122    where
18123        P0: windows_core::Param<ICoreWebView2FrameNavigationCompletedEventHandler>,
18124    {
18125        unsafe {
18126            (windows_core::Interface::vtable(self).add_NavigationCompleted)(
18127                windows_core::Interface::as_raw(self),
18128                eventhandler.param().abi(),
18129                token as _,
18130            )
18131            .ok()
18132        }
18133    }
18134    pub unsafe fn remove_NavigationCompleted(&self, token: i64) -> windows_core::Result<()> {
18135        unsafe {
18136            (windows_core::Interface::vtable(self).remove_NavigationCompleted)(
18137                windows_core::Interface::as_raw(self),
18138                token,
18139            )
18140            .ok()
18141        }
18142    }
18143    pub unsafe fn add_DOMContentLoaded<P0>(
18144        &self,
18145        eventhandler: P0,
18146        token: *mut i64,
18147    ) -> windows_core::Result<()>
18148    where
18149        P0: windows_core::Param<ICoreWebView2FrameDOMContentLoadedEventHandler>,
18150    {
18151        unsafe {
18152            (windows_core::Interface::vtable(self).add_DOMContentLoaded)(
18153                windows_core::Interface::as_raw(self),
18154                eventhandler.param().abi(),
18155                token as _,
18156            )
18157            .ok()
18158        }
18159    }
18160    pub unsafe fn remove_DOMContentLoaded(&self, token: i64) -> windows_core::Result<()> {
18161        unsafe {
18162            (windows_core::Interface::vtable(self).remove_DOMContentLoaded)(
18163                windows_core::Interface::as_raw(self),
18164                token,
18165            )
18166            .ok()
18167        }
18168    }
18169    pub unsafe fn ExecuteScript<P0, P1>(
18170        &self,
18171        javascript: P0,
18172        handler: P1,
18173    ) -> windows_core::Result<()>
18174    where
18175        P0: windows_core::Param<windows_core::PCWSTR>,
18176        P1: windows_core::Param<ICoreWebView2ExecuteScriptCompletedHandler>,
18177    {
18178        unsafe {
18179            (windows_core::Interface::vtable(self).ExecuteScript)(
18180                windows_core::Interface::as_raw(self),
18181                javascript.param().abi(),
18182                handler.param().abi(),
18183            )
18184            .ok()
18185        }
18186    }
18187    pub unsafe fn PostWebMessageAsJson<P0>(&self, webmessageasjson: P0) -> windows_core::Result<()>
18188    where
18189        P0: windows_core::Param<windows_core::PCWSTR>,
18190    {
18191        unsafe {
18192            (windows_core::Interface::vtable(self).PostWebMessageAsJson)(
18193                windows_core::Interface::as_raw(self),
18194                webmessageasjson.param().abi(),
18195            )
18196            .ok()
18197        }
18198    }
18199    pub unsafe fn PostWebMessageAsString<P0>(
18200        &self,
18201        webmessageasstring: P0,
18202    ) -> windows_core::Result<()>
18203    where
18204        P0: windows_core::Param<windows_core::PCWSTR>,
18205    {
18206        unsafe {
18207            (windows_core::Interface::vtable(self).PostWebMessageAsString)(
18208                windows_core::Interface::as_raw(self),
18209                webmessageasstring.param().abi(),
18210            )
18211            .ok()
18212        }
18213    }
18214    pub unsafe fn add_WebMessageReceived<P0>(
18215        &self,
18216        handler: P0,
18217        token: *mut i64,
18218    ) -> windows_core::Result<()>
18219    where
18220        P0: windows_core::Param<ICoreWebView2FrameWebMessageReceivedEventHandler>,
18221    {
18222        unsafe {
18223            (windows_core::Interface::vtable(self).add_WebMessageReceived)(
18224                windows_core::Interface::as_raw(self),
18225                handler.param().abi(),
18226                token as _,
18227            )
18228            .ok()
18229        }
18230    }
18231    pub unsafe fn remove_WebMessageReceived(&self, token: i64) -> windows_core::Result<()> {
18232        unsafe {
18233            (windows_core::Interface::vtable(self).remove_WebMessageReceived)(
18234                windows_core::Interface::as_raw(self),
18235                token,
18236            )
18237            .ok()
18238        }
18239    }
18240}
18241#[repr(C)]
18242#[doc(hidden)]
18243pub struct ICoreWebView2Frame2_Vtbl {
18244    pub base__: ICoreWebView2Frame_Vtbl,
18245    pub add_NavigationStarting: unsafe extern "system" fn(
18246        *mut core::ffi::c_void,
18247        *mut core::ffi::c_void,
18248        *mut i64,
18249    ) -> windows_core::HRESULT,
18250    pub remove_NavigationStarting:
18251        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18252    pub add_ContentLoading: unsafe extern "system" fn(
18253        *mut core::ffi::c_void,
18254        *mut core::ffi::c_void,
18255        *mut i64,
18256    ) -> windows_core::HRESULT,
18257    pub remove_ContentLoading:
18258        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18259    pub add_NavigationCompleted: unsafe extern "system" fn(
18260        *mut core::ffi::c_void,
18261        *mut core::ffi::c_void,
18262        *mut i64,
18263    ) -> windows_core::HRESULT,
18264    pub remove_NavigationCompleted:
18265        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18266    pub add_DOMContentLoaded: unsafe extern "system" fn(
18267        *mut core::ffi::c_void,
18268        *mut core::ffi::c_void,
18269        *mut i64,
18270    ) -> windows_core::HRESULT,
18271    pub remove_DOMContentLoaded:
18272        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18273    pub ExecuteScript: unsafe extern "system" fn(
18274        *mut core::ffi::c_void,
18275        windows_core::PCWSTR,
18276        *mut core::ffi::c_void,
18277    ) -> windows_core::HRESULT,
18278    pub PostWebMessageAsJson: unsafe extern "system" fn(
18279        *mut core::ffi::c_void,
18280        windows_core::PCWSTR,
18281    ) -> windows_core::HRESULT,
18282    pub PostWebMessageAsString: unsafe extern "system" fn(
18283        *mut core::ffi::c_void,
18284        windows_core::PCWSTR,
18285    ) -> windows_core::HRESULT,
18286    pub add_WebMessageReceived: unsafe extern "system" fn(
18287        *mut core::ffi::c_void,
18288        *mut core::ffi::c_void,
18289        *mut i64,
18290    ) -> windows_core::HRESULT,
18291    pub remove_WebMessageReceived:
18292        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18293}
18294pub trait ICoreWebView2Frame2_Impl: ICoreWebView2Frame_Impl {
18295    fn add_NavigationStarting(
18296        &self,
18297        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameNavigationStartingEventHandler>,
18298        token: *mut i64,
18299    ) -> windows_core::Result<()>;
18300    fn remove_NavigationStarting(&self, token: i64) -> windows_core::Result<()>;
18301    fn add_ContentLoading(
18302        &self,
18303        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameContentLoadingEventHandler>,
18304        token: *mut i64,
18305    ) -> windows_core::Result<()>;
18306    fn remove_ContentLoading(&self, token: i64) -> windows_core::Result<()>;
18307    fn add_NavigationCompleted(
18308        &self,
18309        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameNavigationCompletedEventHandler>,
18310        token: *mut i64,
18311    ) -> windows_core::Result<()>;
18312    fn remove_NavigationCompleted(&self, token: i64) -> windows_core::Result<()>;
18313    fn add_DOMContentLoaded(
18314        &self,
18315        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameDOMContentLoadedEventHandler>,
18316        token: *mut i64,
18317    ) -> windows_core::Result<()>;
18318    fn remove_DOMContentLoaded(&self, token: i64) -> windows_core::Result<()>;
18319    fn ExecuteScript(
18320        &self,
18321        javascript: &windows_core::PCWSTR,
18322        handler: windows_core::Ref<'_, ICoreWebView2ExecuteScriptCompletedHandler>,
18323    ) -> windows_core::Result<()>;
18324    fn PostWebMessageAsJson(
18325        &self,
18326        webmessageasjson: &windows_core::PCWSTR,
18327    ) -> windows_core::Result<()>;
18328    fn PostWebMessageAsString(
18329        &self,
18330        webmessageasstring: &windows_core::PCWSTR,
18331    ) -> windows_core::Result<()>;
18332    fn add_WebMessageReceived(
18333        &self,
18334        handler: windows_core::Ref<'_, ICoreWebView2FrameWebMessageReceivedEventHandler>,
18335        token: *mut i64,
18336    ) -> windows_core::Result<()>;
18337    fn remove_WebMessageReceived(&self, token: i64) -> windows_core::Result<()>;
18338}
18339impl ICoreWebView2Frame2_Vtbl {
18340    pub const fn new<Identity: ICoreWebView2Frame2_Impl, const OFFSET: isize>() -> Self {
18341        unsafe extern "system" fn add_NavigationStarting<
18342            Identity: ICoreWebView2Frame2_Impl,
18343            const OFFSET: isize,
18344        >(
18345            this: *mut core::ffi::c_void,
18346            eventhandler: *mut core::ffi::c_void,
18347            token: *mut i64,
18348        ) -> windows_core::HRESULT {
18349            unsafe {
18350                let this: &Identity =
18351                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18352                ICoreWebView2Frame2_Impl::add_NavigationStarting(
18353                    this,
18354                    core::mem::transmute_copy(&eventhandler),
18355                    core::mem::transmute_copy(&token),
18356                )
18357                .into()
18358            }
18359        }
18360        unsafe extern "system" fn remove_NavigationStarting<
18361            Identity: ICoreWebView2Frame2_Impl,
18362            const OFFSET: isize,
18363        >(
18364            this: *mut core::ffi::c_void,
18365            token: i64,
18366        ) -> windows_core::HRESULT {
18367            unsafe {
18368                let this: &Identity =
18369                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18370                ICoreWebView2Frame2_Impl::remove_NavigationStarting(
18371                    this,
18372                    core::mem::transmute_copy(&token),
18373                )
18374                .into()
18375            }
18376        }
18377        unsafe extern "system" fn add_ContentLoading<
18378            Identity: ICoreWebView2Frame2_Impl,
18379            const OFFSET: isize,
18380        >(
18381            this: *mut core::ffi::c_void,
18382            eventhandler: *mut core::ffi::c_void,
18383            token: *mut i64,
18384        ) -> windows_core::HRESULT {
18385            unsafe {
18386                let this: &Identity =
18387                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18388                ICoreWebView2Frame2_Impl::add_ContentLoading(
18389                    this,
18390                    core::mem::transmute_copy(&eventhandler),
18391                    core::mem::transmute_copy(&token),
18392                )
18393                .into()
18394            }
18395        }
18396        unsafe extern "system" fn remove_ContentLoading<
18397            Identity: ICoreWebView2Frame2_Impl,
18398            const OFFSET: isize,
18399        >(
18400            this: *mut core::ffi::c_void,
18401            token: i64,
18402        ) -> windows_core::HRESULT {
18403            unsafe {
18404                let this: &Identity =
18405                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18406                ICoreWebView2Frame2_Impl::remove_ContentLoading(
18407                    this,
18408                    core::mem::transmute_copy(&token),
18409                )
18410                .into()
18411            }
18412        }
18413        unsafe extern "system" fn add_NavigationCompleted<
18414            Identity: ICoreWebView2Frame2_Impl,
18415            const OFFSET: isize,
18416        >(
18417            this: *mut core::ffi::c_void,
18418            eventhandler: *mut core::ffi::c_void,
18419            token: *mut i64,
18420        ) -> windows_core::HRESULT {
18421            unsafe {
18422                let this: &Identity =
18423                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18424                ICoreWebView2Frame2_Impl::add_NavigationCompleted(
18425                    this,
18426                    core::mem::transmute_copy(&eventhandler),
18427                    core::mem::transmute_copy(&token),
18428                )
18429                .into()
18430            }
18431        }
18432        unsafe extern "system" fn remove_NavigationCompleted<
18433            Identity: ICoreWebView2Frame2_Impl,
18434            const OFFSET: isize,
18435        >(
18436            this: *mut core::ffi::c_void,
18437            token: i64,
18438        ) -> windows_core::HRESULT {
18439            unsafe {
18440                let this: &Identity =
18441                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18442                ICoreWebView2Frame2_Impl::remove_NavigationCompleted(
18443                    this,
18444                    core::mem::transmute_copy(&token),
18445                )
18446                .into()
18447            }
18448        }
18449        unsafe extern "system" fn add_DOMContentLoaded<
18450            Identity: ICoreWebView2Frame2_Impl,
18451            const OFFSET: isize,
18452        >(
18453            this: *mut core::ffi::c_void,
18454            eventhandler: *mut core::ffi::c_void,
18455            token: *mut i64,
18456        ) -> windows_core::HRESULT {
18457            unsafe {
18458                let this: &Identity =
18459                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18460                ICoreWebView2Frame2_Impl::add_DOMContentLoaded(
18461                    this,
18462                    core::mem::transmute_copy(&eventhandler),
18463                    core::mem::transmute_copy(&token),
18464                )
18465                .into()
18466            }
18467        }
18468        unsafe extern "system" fn remove_DOMContentLoaded<
18469            Identity: ICoreWebView2Frame2_Impl,
18470            const OFFSET: isize,
18471        >(
18472            this: *mut core::ffi::c_void,
18473            token: i64,
18474        ) -> windows_core::HRESULT {
18475            unsafe {
18476                let this: &Identity =
18477                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18478                ICoreWebView2Frame2_Impl::remove_DOMContentLoaded(
18479                    this,
18480                    core::mem::transmute_copy(&token),
18481                )
18482                .into()
18483            }
18484        }
18485        unsafe extern "system" fn ExecuteScript<
18486            Identity: ICoreWebView2Frame2_Impl,
18487            const OFFSET: isize,
18488        >(
18489            this: *mut core::ffi::c_void,
18490            javascript: windows_core::PCWSTR,
18491            handler: *mut core::ffi::c_void,
18492        ) -> windows_core::HRESULT {
18493            unsafe {
18494                let this: &Identity =
18495                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18496                ICoreWebView2Frame2_Impl::ExecuteScript(
18497                    this,
18498                    core::mem::transmute(&javascript),
18499                    core::mem::transmute_copy(&handler),
18500                )
18501                .into()
18502            }
18503        }
18504        unsafe extern "system" fn PostWebMessageAsJson<
18505            Identity: ICoreWebView2Frame2_Impl,
18506            const OFFSET: isize,
18507        >(
18508            this: *mut core::ffi::c_void,
18509            webmessageasjson: windows_core::PCWSTR,
18510        ) -> windows_core::HRESULT {
18511            unsafe {
18512                let this: &Identity =
18513                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18514                ICoreWebView2Frame2_Impl::PostWebMessageAsJson(
18515                    this,
18516                    core::mem::transmute(&webmessageasjson),
18517                )
18518                .into()
18519            }
18520        }
18521        unsafe extern "system" fn PostWebMessageAsString<
18522            Identity: ICoreWebView2Frame2_Impl,
18523            const OFFSET: isize,
18524        >(
18525            this: *mut core::ffi::c_void,
18526            webmessageasstring: windows_core::PCWSTR,
18527        ) -> windows_core::HRESULT {
18528            unsafe {
18529                let this: &Identity =
18530                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18531                ICoreWebView2Frame2_Impl::PostWebMessageAsString(
18532                    this,
18533                    core::mem::transmute(&webmessageasstring),
18534                )
18535                .into()
18536            }
18537        }
18538        unsafe extern "system" fn add_WebMessageReceived<
18539            Identity: ICoreWebView2Frame2_Impl,
18540            const OFFSET: isize,
18541        >(
18542            this: *mut core::ffi::c_void,
18543            handler: *mut core::ffi::c_void,
18544            token: *mut i64,
18545        ) -> windows_core::HRESULT {
18546            unsafe {
18547                let this: &Identity =
18548                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18549                ICoreWebView2Frame2_Impl::add_WebMessageReceived(
18550                    this,
18551                    core::mem::transmute_copy(&handler),
18552                    core::mem::transmute_copy(&token),
18553                )
18554                .into()
18555            }
18556        }
18557        unsafe extern "system" fn remove_WebMessageReceived<
18558            Identity: ICoreWebView2Frame2_Impl,
18559            const OFFSET: isize,
18560        >(
18561            this: *mut core::ffi::c_void,
18562            token: i64,
18563        ) -> windows_core::HRESULT {
18564            unsafe {
18565                let this: &Identity =
18566                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18567                ICoreWebView2Frame2_Impl::remove_WebMessageReceived(
18568                    this,
18569                    core::mem::transmute_copy(&token),
18570                )
18571                .into()
18572            }
18573        }
18574        Self {
18575            base__: ICoreWebView2Frame_Vtbl::new::<Identity, OFFSET>(),
18576            add_NavigationStarting: add_NavigationStarting::<Identity, OFFSET>,
18577            remove_NavigationStarting: remove_NavigationStarting::<Identity, OFFSET>,
18578            add_ContentLoading: add_ContentLoading::<Identity, OFFSET>,
18579            remove_ContentLoading: remove_ContentLoading::<Identity, OFFSET>,
18580            add_NavigationCompleted: add_NavigationCompleted::<Identity, OFFSET>,
18581            remove_NavigationCompleted: remove_NavigationCompleted::<Identity, OFFSET>,
18582            add_DOMContentLoaded: add_DOMContentLoaded::<Identity, OFFSET>,
18583            remove_DOMContentLoaded: remove_DOMContentLoaded::<Identity, OFFSET>,
18584            ExecuteScript: ExecuteScript::<Identity, OFFSET>,
18585            PostWebMessageAsJson: PostWebMessageAsJson::<Identity, OFFSET>,
18586            PostWebMessageAsString: PostWebMessageAsString::<Identity, OFFSET>,
18587            add_WebMessageReceived: add_WebMessageReceived::<Identity, OFFSET>,
18588            remove_WebMessageReceived: remove_WebMessageReceived::<Identity, OFFSET>,
18589        }
18590    }
18591    pub fn matches(iid: &windows_core::GUID) -> bool {
18592        iid == &<ICoreWebView2Frame2 as windows_core::Interface>::IID
18593            || iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
18594    }
18595}
18596impl windows_core::RuntimeName for ICoreWebView2Frame2 {}
18597windows_core::imp::define_interface!(
18598    ICoreWebView2Frame3,
18599    ICoreWebView2Frame3_Vtbl,
18600    0xb50d82cc_cc28_481d_9614_cb048895e6a0
18601);
18602impl core::ops::Deref for ICoreWebView2Frame3 {
18603    type Target = ICoreWebView2Frame2;
18604    fn deref(&self) -> &Self::Target {
18605        unsafe { core::mem::transmute(self) }
18606    }
18607}
18608windows_core::imp::interface_hierarchy!(
18609    ICoreWebView2Frame3,
18610    windows_core::IUnknown,
18611    ICoreWebView2Frame,
18612    ICoreWebView2Frame2
18613);
18614impl ICoreWebView2Frame3 {
18615    pub unsafe fn add_PermissionRequested<P0>(
18616        &self,
18617        eventhandler: P0,
18618        token: *mut i64,
18619    ) -> windows_core::Result<()>
18620    where
18621        P0: windows_core::Param<ICoreWebView2FramePermissionRequestedEventHandler>,
18622    {
18623        unsafe {
18624            (windows_core::Interface::vtable(self).add_PermissionRequested)(
18625                windows_core::Interface::as_raw(self),
18626                eventhandler.param().abi(),
18627                token as _,
18628            )
18629            .ok()
18630        }
18631    }
18632    pub unsafe fn remove_PermissionRequested(&self, token: i64) -> windows_core::Result<()> {
18633        unsafe {
18634            (windows_core::Interface::vtable(self).remove_PermissionRequested)(
18635                windows_core::Interface::as_raw(self),
18636                token,
18637            )
18638            .ok()
18639        }
18640    }
18641}
18642#[repr(C)]
18643#[doc(hidden)]
18644pub struct ICoreWebView2Frame3_Vtbl {
18645    pub base__: ICoreWebView2Frame2_Vtbl,
18646    pub add_PermissionRequested: unsafe extern "system" fn(
18647        *mut core::ffi::c_void,
18648        *mut core::ffi::c_void,
18649        *mut i64,
18650    ) -> windows_core::HRESULT,
18651    pub remove_PermissionRequested:
18652        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18653}
18654pub trait ICoreWebView2Frame3_Impl: ICoreWebView2Frame2_Impl {
18655    fn add_PermissionRequested(
18656        &self,
18657        eventhandler: windows_core::Ref<'_, ICoreWebView2FramePermissionRequestedEventHandler>,
18658        token: *mut i64,
18659    ) -> windows_core::Result<()>;
18660    fn remove_PermissionRequested(&self, token: i64) -> windows_core::Result<()>;
18661}
18662impl ICoreWebView2Frame3_Vtbl {
18663    pub const fn new<Identity: ICoreWebView2Frame3_Impl, const OFFSET: isize>() -> Self {
18664        unsafe extern "system" fn add_PermissionRequested<
18665            Identity: ICoreWebView2Frame3_Impl,
18666            const OFFSET: isize,
18667        >(
18668            this: *mut core::ffi::c_void,
18669            eventhandler: *mut core::ffi::c_void,
18670            token: *mut i64,
18671        ) -> windows_core::HRESULT {
18672            unsafe {
18673                let this: &Identity =
18674                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18675                ICoreWebView2Frame3_Impl::add_PermissionRequested(
18676                    this,
18677                    core::mem::transmute_copy(&eventhandler),
18678                    core::mem::transmute_copy(&token),
18679                )
18680                .into()
18681            }
18682        }
18683        unsafe extern "system" fn remove_PermissionRequested<
18684            Identity: ICoreWebView2Frame3_Impl,
18685            const OFFSET: isize,
18686        >(
18687            this: *mut core::ffi::c_void,
18688            token: i64,
18689        ) -> windows_core::HRESULT {
18690            unsafe {
18691                let this: &Identity =
18692                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18693                ICoreWebView2Frame3_Impl::remove_PermissionRequested(
18694                    this,
18695                    core::mem::transmute_copy(&token),
18696                )
18697                .into()
18698            }
18699        }
18700        Self {
18701            base__: ICoreWebView2Frame2_Vtbl::new::<Identity, OFFSET>(),
18702            add_PermissionRequested: add_PermissionRequested::<Identity, OFFSET>,
18703            remove_PermissionRequested: remove_PermissionRequested::<Identity, OFFSET>,
18704        }
18705    }
18706    pub fn matches(iid: &windows_core::GUID) -> bool {
18707        iid == &<ICoreWebView2Frame3 as windows_core::Interface>::IID
18708            || iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
18709            || iid == &<ICoreWebView2Frame2 as windows_core::Interface>::IID
18710    }
18711}
18712impl windows_core::RuntimeName for ICoreWebView2Frame3 {}
18713windows_core::imp::define_interface!(
18714    ICoreWebView2Frame4,
18715    ICoreWebView2Frame4_Vtbl,
18716    0x188782dc_92aa_4732_ab3c_fcc59f6f68b9
18717);
18718impl core::ops::Deref for ICoreWebView2Frame4 {
18719    type Target = ICoreWebView2Frame3;
18720    fn deref(&self) -> &Self::Target {
18721        unsafe { core::mem::transmute(self) }
18722    }
18723}
18724windows_core::imp::interface_hierarchy!(
18725    ICoreWebView2Frame4,
18726    windows_core::IUnknown,
18727    ICoreWebView2Frame,
18728    ICoreWebView2Frame2,
18729    ICoreWebView2Frame3
18730);
18731impl ICoreWebView2Frame4 {
18732    pub unsafe fn PostSharedBufferToScript<P0, P2>(
18733        &self,
18734        sharedbuffer: P0,
18735        access: COREWEBVIEW2_SHARED_BUFFER_ACCESS,
18736        additionaldataasjson: P2,
18737    ) -> windows_core::Result<()>
18738    where
18739        P0: windows_core::Param<ICoreWebView2SharedBuffer>,
18740        P2: windows_core::Param<windows_core::PCWSTR>,
18741    {
18742        unsafe {
18743            (windows_core::Interface::vtable(self).PostSharedBufferToScript)(
18744                windows_core::Interface::as_raw(self),
18745                sharedbuffer.param().abi(),
18746                access,
18747                additionaldataasjson.param().abi(),
18748            )
18749            .ok()
18750        }
18751    }
18752}
18753#[repr(C)]
18754#[doc(hidden)]
18755pub struct ICoreWebView2Frame4_Vtbl {
18756    pub base__: ICoreWebView2Frame3_Vtbl,
18757    pub PostSharedBufferToScript: unsafe extern "system" fn(
18758        *mut core::ffi::c_void,
18759        *mut core::ffi::c_void,
18760        COREWEBVIEW2_SHARED_BUFFER_ACCESS,
18761        windows_core::PCWSTR,
18762    ) -> windows_core::HRESULT,
18763}
18764pub trait ICoreWebView2Frame4_Impl: ICoreWebView2Frame3_Impl {
18765    fn PostSharedBufferToScript(
18766        &self,
18767        sharedbuffer: windows_core::Ref<'_, ICoreWebView2SharedBuffer>,
18768        access: COREWEBVIEW2_SHARED_BUFFER_ACCESS,
18769        additionaldataasjson: &windows_core::PCWSTR,
18770    ) -> windows_core::Result<()>;
18771}
18772impl ICoreWebView2Frame4_Vtbl {
18773    pub const fn new<Identity: ICoreWebView2Frame4_Impl, const OFFSET: isize>() -> Self {
18774        unsafe extern "system" fn PostSharedBufferToScript<
18775            Identity: ICoreWebView2Frame4_Impl,
18776            const OFFSET: isize,
18777        >(
18778            this: *mut core::ffi::c_void,
18779            sharedbuffer: *mut core::ffi::c_void,
18780            access: COREWEBVIEW2_SHARED_BUFFER_ACCESS,
18781            additionaldataasjson: windows_core::PCWSTR,
18782        ) -> windows_core::HRESULT {
18783            unsafe {
18784                let this: &Identity =
18785                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18786                ICoreWebView2Frame4_Impl::PostSharedBufferToScript(
18787                    this,
18788                    core::mem::transmute_copy(&sharedbuffer),
18789                    core::mem::transmute_copy(&access),
18790                    core::mem::transmute(&additionaldataasjson),
18791                )
18792                .into()
18793            }
18794        }
18795        Self {
18796            base__: ICoreWebView2Frame3_Vtbl::new::<Identity, OFFSET>(),
18797            PostSharedBufferToScript: PostSharedBufferToScript::<Identity, OFFSET>,
18798        }
18799    }
18800    pub fn matches(iid: &windows_core::GUID) -> bool {
18801        iid == &<ICoreWebView2Frame4 as windows_core::Interface>::IID
18802            || iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
18803            || iid == &<ICoreWebView2Frame2 as windows_core::Interface>::IID
18804            || iid == &<ICoreWebView2Frame3 as windows_core::Interface>::IID
18805    }
18806}
18807impl windows_core::RuntimeName for ICoreWebView2Frame4 {}
18808windows_core::imp::define_interface!(
18809    ICoreWebView2Frame5,
18810    ICoreWebView2Frame5_Vtbl,
18811    0x99d199c4_7305_11ee_b962_0242ac120002
18812);
18813impl core::ops::Deref for ICoreWebView2Frame5 {
18814    type Target = ICoreWebView2Frame4;
18815    fn deref(&self) -> &Self::Target {
18816        unsafe { core::mem::transmute(self) }
18817    }
18818}
18819windows_core::imp::interface_hierarchy!(
18820    ICoreWebView2Frame5,
18821    windows_core::IUnknown,
18822    ICoreWebView2Frame,
18823    ICoreWebView2Frame2,
18824    ICoreWebView2Frame3,
18825    ICoreWebView2Frame4
18826);
18827impl ICoreWebView2Frame5 {
18828    pub unsafe fn FrameId(&self, value: *mut u32) -> windows_core::Result<()> {
18829        unsafe {
18830            (windows_core::Interface::vtable(self).FrameId)(
18831                windows_core::Interface::as_raw(self),
18832                value as _,
18833            )
18834            .ok()
18835        }
18836    }
18837}
18838#[repr(C)]
18839#[doc(hidden)]
18840pub struct ICoreWebView2Frame5_Vtbl {
18841    pub base__: ICoreWebView2Frame4_Vtbl,
18842    pub FrameId:
18843        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
18844}
18845pub trait ICoreWebView2Frame5_Impl: ICoreWebView2Frame4_Impl {
18846    fn FrameId(&self, value: *mut u32) -> windows_core::Result<()>;
18847}
18848impl ICoreWebView2Frame5_Vtbl {
18849    pub const fn new<Identity: ICoreWebView2Frame5_Impl, const OFFSET: isize>() -> Self {
18850        unsafe extern "system" fn FrameId<
18851            Identity: ICoreWebView2Frame5_Impl,
18852            const OFFSET: isize,
18853        >(
18854            this: *mut core::ffi::c_void,
18855            value: *mut u32,
18856        ) -> windows_core::HRESULT {
18857            unsafe {
18858                let this: &Identity =
18859                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18860                ICoreWebView2Frame5_Impl::FrameId(this, core::mem::transmute_copy(&value)).into()
18861            }
18862        }
18863        Self {
18864            base__: ICoreWebView2Frame4_Vtbl::new::<Identity, OFFSET>(),
18865            FrameId: FrameId::<Identity, OFFSET>,
18866        }
18867    }
18868    pub fn matches(iid: &windows_core::GUID) -> bool {
18869        iid == &<ICoreWebView2Frame5 as windows_core::Interface>::IID
18870            || iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
18871            || iid == &<ICoreWebView2Frame2 as windows_core::Interface>::IID
18872            || iid == &<ICoreWebView2Frame3 as windows_core::Interface>::IID
18873            || iid == &<ICoreWebView2Frame4 as windows_core::Interface>::IID
18874    }
18875}
18876impl windows_core::RuntimeName for ICoreWebView2Frame5 {}
18877windows_core::imp::define_interface!(
18878    ICoreWebView2Frame6,
18879    ICoreWebView2Frame6_Vtbl,
18880    0x0de611fd_31e9_5ddc_9d71_95eda26eff32
18881);
18882impl core::ops::Deref for ICoreWebView2Frame6 {
18883    type Target = ICoreWebView2Frame5;
18884    fn deref(&self) -> &Self::Target {
18885        unsafe { core::mem::transmute(self) }
18886    }
18887}
18888windows_core::imp::interface_hierarchy!(
18889    ICoreWebView2Frame6,
18890    windows_core::IUnknown,
18891    ICoreWebView2Frame,
18892    ICoreWebView2Frame2,
18893    ICoreWebView2Frame3,
18894    ICoreWebView2Frame4,
18895    ICoreWebView2Frame5
18896);
18897impl ICoreWebView2Frame6 {
18898    pub unsafe fn add_ScreenCaptureStarting<P0>(
18899        &self,
18900        eventhandler: P0,
18901        token: *mut i64,
18902    ) -> windows_core::Result<()>
18903    where
18904        P0: windows_core::Param<ICoreWebView2FrameScreenCaptureStartingEventHandler>,
18905    {
18906        unsafe {
18907            (windows_core::Interface::vtable(self).add_ScreenCaptureStarting)(
18908                windows_core::Interface::as_raw(self),
18909                eventhandler.param().abi(),
18910                token as _,
18911            )
18912            .ok()
18913        }
18914    }
18915    pub unsafe fn remove_ScreenCaptureStarting(&self, token: i64) -> windows_core::Result<()> {
18916        unsafe {
18917            (windows_core::Interface::vtable(self).remove_ScreenCaptureStarting)(
18918                windows_core::Interface::as_raw(self),
18919                token,
18920            )
18921            .ok()
18922        }
18923    }
18924}
18925#[repr(C)]
18926#[doc(hidden)]
18927pub struct ICoreWebView2Frame6_Vtbl {
18928    pub base__: ICoreWebView2Frame5_Vtbl,
18929    pub add_ScreenCaptureStarting: unsafe extern "system" fn(
18930        *mut core::ffi::c_void,
18931        *mut core::ffi::c_void,
18932        *mut i64,
18933    ) -> windows_core::HRESULT,
18934    pub remove_ScreenCaptureStarting:
18935        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
18936}
18937pub trait ICoreWebView2Frame6_Impl: ICoreWebView2Frame5_Impl {
18938    fn add_ScreenCaptureStarting(
18939        &self,
18940        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameScreenCaptureStartingEventHandler>,
18941        token: *mut i64,
18942    ) -> windows_core::Result<()>;
18943    fn remove_ScreenCaptureStarting(&self, token: i64) -> windows_core::Result<()>;
18944}
18945impl ICoreWebView2Frame6_Vtbl {
18946    pub const fn new<Identity: ICoreWebView2Frame6_Impl, const OFFSET: isize>() -> Self {
18947        unsafe extern "system" fn add_ScreenCaptureStarting<
18948            Identity: ICoreWebView2Frame6_Impl,
18949            const OFFSET: isize,
18950        >(
18951            this: *mut core::ffi::c_void,
18952            eventhandler: *mut core::ffi::c_void,
18953            token: *mut i64,
18954        ) -> windows_core::HRESULT {
18955            unsafe {
18956                let this: &Identity =
18957                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18958                ICoreWebView2Frame6_Impl::add_ScreenCaptureStarting(
18959                    this,
18960                    core::mem::transmute_copy(&eventhandler),
18961                    core::mem::transmute_copy(&token),
18962                )
18963                .into()
18964            }
18965        }
18966        unsafe extern "system" fn remove_ScreenCaptureStarting<
18967            Identity: ICoreWebView2Frame6_Impl,
18968            const OFFSET: isize,
18969        >(
18970            this: *mut core::ffi::c_void,
18971            token: i64,
18972        ) -> windows_core::HRESULT {
18973            unsafe {
18974                let this: &Identity =
18975                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18976                ICoreWebView2Frame6_Impl::remove_ScreenCaptureStarting(
18977                    this,
18978                    core::mem::transmute_copy(&token),
18979                )
18980                .into()
18981            }
18982        }
18983        Self {
18984            base__: ICoreWebView2Frame5_Vtbl::new::<Identity, OFFSET>(),
18985            add_ScreenCaptureStarting: add_ScreenCaptureStarting::<Identity, OFFSET>,
18986            remove_ScreenCaptureStarting: remove_ScreenCaptureStarting::<Identity, OFFSET>,
18987        }
18988    }
18989    pub fn matches(iid: &windows_core::GUID) -> bool {
18990        iid == &<ICoreWebView2Frame6 as windows_core::Interface>::IID
18991            || iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
18992            || iid == &<ICoreWebView2Frame2 as windows_core::Interface>::IID
18993            || iid == &<ICoreWebView2Frame3 as windows_core::Interface>::IID
18994            || iid == &<ICoreWebView2Frame4 as windows_core::Interface>::IID
18995            || iid == &<ICoreWebView2Frame5 as windows_core::Interface>::IID
18996    }
18997}
18998impl windows_core::RuntimeName for ICoreWebView2Frame6 {}
18999windows_core::imp::define_interface!(
19000    ICoreWebView2Frame7,
19001    ICoreWebView2Frame7_Vtbl,
19002    0x3598cfa2_d85d_5a9f_9228_4dde1f59ec64
19003);
19004impl core::ops::Deref for ICoreWebView2Frame7 {
19005    type Target = ICoreWebView2Frame6;
19006    fn deref(&self) -> &Self::Target {
19007        unsafe { core::mem::transmute(self) }
19008    }
19009}
19010windows_core::imp::interface_hierarchy!(
19011    ICoreWebView2Frame7,
19012    windows_core::IUnknown,
19013    ICoreWebView2Frame,
19014    ICoreWebView2Frame2,
19015    ICoreWebView2Frame3,
19016    ICoreWebView2Frame4,
19017    ICoreWebView2Frame5,
19018    ICoreWebView2Frame6
19019);
19020impl ICoreWebView2Frame7 {
19021    pub unsafe fn add_FrameCreated<P0>(
19022        &self,
19023        eventhandler: P0,
19024        token: *mut i64,
19025    ) -> windows_core::Result<()>
19026    where
19027        P0: windows_core::Param<ICoreWebView2FrameChildFrameCreatedEventHandler>,
19028    {
19029        unsafe {
19030            (windows_core::Interface::vtable(self).add_FrameCreated)(
19031                windows_core::Interface::as_raw(self),
19032                eventhandler.param().abi(),
19033                token as _,
19034            )
19035            .ok()
19036        }
19037    }
19038    pub unsafe fn remove_FrameCreated(&self, token: i64) -> windows_core::Result<()> {
19039        unsafe {
19040            (windows_core::Interface::vtable(self).remove_FrameCreated)(
19041                windows_core::Interface::as_raw(self),
19042                token,
19043            )
19044            .ok()
19045        }
19046    }
19047}
19048#[repr(C)]
19049#[doc(hidden)]
19050pub struct ICoreWebView2Frame7_Vtbl {
19051    pub base__: ICoreWebView2Frame6_Vtbl,
19052    pub add_FrameCreated: unsafe extern "system" fn(
19053        *mut core::ffi::c_void,
19054        *mut core::ffi::c_void,
19055        *mut i64,
19056    ) -> windows_core::HRESULT,
19057    pub remove_FrameCreated:
19058        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
19059}
19060pub trait ICoreWebView2Frame7_Impl: ICoreWebView2Frame6_Impl {
19061    fn add_FrameCreated(
19062        &self,
19063        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameChildFrameCreatedEventHandler>,
19064        token: *mut i64,
19065    ) -> windows_core::Result<()>;
19066    fn remove_FrameCreated(&self, token: i64) -> windows_core::Result<()>;
19067}
19068impl ICoreWebView2Frame7_Vtbl {
19069    pub const fn new<Identity: ICoreWebView2Frame7_Impl, const OFFSET: isize>() -> Self {
19070        unsafe extern "system" fn add_FrameCreated<
19071            Identity: ICoreWebView2Frame7_Impl,
19072            const OFFSET: isize,
19073        >(
19074            this: *mut core::ffi::c_void,
19075            eventhandler: *mut core::ffi::c_void,
19076            token: *mut i64,
19077        ) -> windows_core::HRESULT {
19078            unsafe {
19079                let this: &Identity =
19080                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19081                ICoreWebView2Frame7_Impl::add_FrameCreated(
19082                    this,
19083                    core::mem::transmute_copy(&eventhandler),
19084                    core::mem::transmute_copy(&token),
19085                )
19086                .into()
19087            }
19088        }
19089        unsafe extern "system" fn remove_FrameCreated<
19090            Identity: ICoreWebView2Frame7_Impl,
19091            const OFFSET: isize,
19092        >(
19093            this: *mut core::ffi::c_void,
19094            token: i64,
19095        ) -> windows_core::HRESULT {
19096            unsafe {
19097                let this: &Identity =
19098                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19099                ICoreWebView2Frame7_Impl::remove_FrameCreated(
19100                    this,
19101                    core::mem::transmute_copy(&token),
19102                )
19103                .into()
19104            }
19105        }
19106        Self {
19107            base__: ICoreWebView2Frame6_Vtbl::new::<Identity, OFFSET>(),
19108            add_FrameCreated: add_FrameCreated::<Identity, OFFSET>,
19109            remove_FrameCreated: remove_FrameCreated::<Identity, OFFSET>,
19110        }
19111    }
19112    pub fn matches(iid: &windows_core::GUID) -> bool {
19113        iid == &<ICoreWebView2Frame7 as windows_core::Interface>::IID
19114            || iid == &<ICoreWebView2Frame as windows_core::Interface>::IID
19115            || iid == &<ICoreWebView2Frame2 as windows_core::Interface>::IID
19116            || iid == &<ICoreWebView2Frame3 as windows_core::Interface>::IID
19117            || iid == &<ICoreWebView2Frame4 as windows_core::Interface>::IID
19118            || iid == &<ICoreWebView2Frame5 as windows_core::Interface>::IID
19119            || iid == &<ICoreWebView2Frame6 as windows_core::Interface>::IID
19120    }
19121}
19122impl windows_core::RuntimeName for ICoreWebView2Frame7 {}
19123windows_core::imp::define_interface!(
19124    ICoreWebView2FrameChildFrameCreatedEventHandler,
19125    ICoreWebView2FrameChildFrameCreatedEventHandler_Vtbl,
19126    0x569e40e7_46b7_563d_83ae_1073155664d7
19127);
19128windows_core::imp::interface_hierarchy!(
19129    ICoreWebView2FrameChildFrameCreatedEventHandler,
19130    windows_core::IUnknown
19131);
19132impl ICoreWebView2FrameChildFrameCreatedEventHandler {
19133    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
19134    where
19135        P0: windows_core::Param<ICoreWebView2Frame>,
19136        P1: windows_core::Param<ICoreWebView2FrameCreatedEventArgs>,
19137    {
19138        unsafe {
19139            (windows_core::Interface::vtable(self).Invoke)(
19140                windows_core::Interface::as_raw(self),
19141                sender.param().abi(),
19142                args.param().abi(),
19143            )
19144            .ok()
19145        }
19146    }
19147}
19148#[repr(C)]
19149#[doc(hidden)]
19150pub struct ICoreWebView2FrameChildFrameCreatedEventHandler_Vtbl {
19151    pub base__: windows_core::IUnknown_Vtbl,
19152    pub Invoke: unsafe extern "system" fn(
19153        *mut core::ffi::c_void,
19154        *mut core::ffi::c_void,
19155        *mut core::ffi::c_void,
19156    ) -> windows_core::HRESULT,
19157}
19158pub trait ICoreWebView2FrameChildFrameCreatedEventHandler_Impl: windows_core::IUnknownImpl {
19159    fn Invoke(
19160        &self,
19161        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
19162        args: windows_core::Ref<'_, ICoreWebView2FrameCreatedEventArgs>,
19163    ) -> windows_core::Result<()>;
19164}
19165impl ICoreWebView2FrameChildFrameCreatedEventHandler_Vtbl {
19166    pub const fn new<
19167        Identity: ICoreWebView2FrameChildFrameCreatedEventHandler_Impl,
19168        const OFFSET: isize,
19169    >() -> Self {
19170        unsafe extern "system" fn Invoke<
19171            Identity: ICoreWebView2FrameChildFrameCreatedEventHandler_Impl,
19172            const OFFSET: isize,
19173        >(
19174            this: *mut core::ffi::c_void,
19175            sender: *mut core::ffi::c_void,
19176            args: *mut core::ffi::c_void,
19177        ) -> windows_core::HRESULT {
19178            unsafe {
19179                let this: &Identity =
19180                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19181                ICoreWebView2FrameChildFrameCreatedEventHandler_Impl::Invoke(
19182                    this,
19183                    core::mem::transmute_copy(&sender),
19184                    core::mem::transmute_copy(&args),
19185                )
19186                .into()
19187            }
19188        }
19189        Self {
19190            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19191            Invoke: Invoke::<Identity, OFFSET>,
19192        }
19193    }
19194    pub fn matches(iid: &windows_core::GUID) -> bool {
19195        iid == &<ICoreWebView2FrameChildFrameCreatedEventHandler as windows_core::Interface>::IID
19196    }
19197}
19198impl windows_core::RuntimeName for ICoreWebView2FrameChildFrameCreatedEventHandler {}
19199windows_core::imp::define_interface!(
19200    ICoreWebView2FrameContentLoadingEventHandler,
19201    ICoreWebView2FrameContentLoadingEventHandler_Vtbl,
19202    0x0d6156f2_d332_49a7_9e03_7d8f2feeee54
19203);
19204windows_core::imp::interface_hierarchy!(
19205    ICoreWebView2FrameContentLoadingEventHandler,
19206    windows_core::IUnknown
19207);
19208impl ICoreWebView2FrameContentLoadingEventHandler {
19209    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
19210    where
19211        P0: windows_core::Param<ICoreWebView2Frame>,
19212        P1: windows_core::Param<ICoreWebView2ContentLoadingEventArgs>,
19213    {
19214        unsafe {
19215            (windows_core::Interface::vtable(self).Invoke)(
19216                windows_core::Interface::as_raw(self),
19217                sender.param().abi(),
19218                args.param().abi(),
19219            )
19220            .ok()
19221        }
19222    }
19223}
19224#[repr(C)]
19225#[doc(hidden)]
19226pub struct ICoreWebView2FrameContentLoadingEventHandler_Vtbl {
19227    pub base__: windows_core::IUnknown_Vtbl,
19228    pub Invoke: unsafe extern "system" fn(
19229        *mut core::ffi::c_void,
19230        *mut core::ffi::c_void,
19231        *mut core::ffi::c_void,
19232    ) -> windows_core::HRESULT,
19233}
19234pub trait ICoreWebView2FrameContentLoadingEventHandler_Impl: windows_core::IUnknownImpl {
19235    fn Invoke(
19236        &self,
19237        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
19238        args: windows_core::Ref<'_, ICoreWebView2ContentLoadingEventArgs>,
19239    ) -> windows_core::Result<()>;
19240}
19241impl ICoreWebView2FrameContentLoadingEventHandler_Vtbl {
19242    pub const fn new<
19243        Identity: ICoreWebView2FrameContentLoadingEventHandler_Impl,
19244        const OFFSET: isize,
19245    >() -> Self {
19246        unsafe extern "system" fn Invoke<
19247            Identity: ICoreWebView2FrameContentLoadingEventHandler_Impl,
19248            const OFFSET: isize,
19249        >(
19250            this: *mut core::ffi::c_void,
19251            sender: *mut core::ffi::c_void,
19252            args: *mut core::ffi::c_void,
19253        ) -> windows_core::HRESULT {
19254            unsafe {
19255                let this: &Identity =
19256                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19257                ICoreWebView2FrameContentLoadingEventHandler_Impl::Invoke(
19258                    this,
19259                    core::mem::transmute_copy(&sender),
19260                    core::mem::transmute_copy(&args),
19261                )
19262                .into()
19263            }
19264        }
19265        Self {
19266            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19267            Invoke: Invoke::<Identity, OFFSET>,
19268        }
19269    }
19270    pub fn matches(iid: &windows_core::GUID) -> bool {
19271        iid == &<ICoreWebView2FrameContentLoadingEventHandler as windows_core::Interface>::IID
19272    }
19273}
19274impl windows_core::RuntimeName for ICoreWebView2FrameContentLoadingEventHandler {}
19275windows_core::imp::define_interface!(
19276    ICoreWebView2FrameCreatedEventArgs,
19277    ICoreWebView2FrameCreatedEventArgs_Vtbl,
19278    0x4d6e7b5e_9baa_11eb_a8b3_0242ac130003
19279);
19280windows_core::imp::interface_hierarchy!(ICoreWebView2FrameCreatedEventArgs, windows_core::IUnknown);
19281impl ICoreWebView2FrameCreatedEventArgs {
19282    pub unsafe fn Frame(&self) -> windows_core::Result<ICoreWebView2Frame> {
19283        unsafe {
19284            let mut result__ = core::mem::zeroed();
19285            (windows_core::Interface::vtable(self).Frame)(
19286                windows_core::Interface::as_raw(self),
19287                &mut result__,
19288            )
19289            .and_then(|| windows_core::Type::from_abi(result__))
19290        }
19291    }
19292}
19293#[repr(C)]
19294#[doc(hidden)]
19295pub struct ICoreWebView2FrameCreatedEventArgs_Vtbl {
19296    pub base__: windows_core::IUnknown_Vtbl,
19297    pub Frame: unsafe extern "system" fn(
19298        *mut core::ffi::c_void,
19299        *mut *mut core::ffi::c_void,
19300    ) -> windows_core::HRESULT,
19301}
19302pub trait ICoreWebView2FrameCreatedEventArgs_Impl: windows_core::IUnknownImpl {
19303    fn Frame(&self) -> windows_core::Result<ICoreWebView2Frame>;
19304}
19305impl ICoreWebView2FrameCreatedEventArgs_Vtbl {
19306    pub const fn new<Identity: ICoreWebView2FrameCreatedEventArgs_Impl, const OFFSET: isize>(
19307    ) -> Self {
19308        unsafe extern "system" fn Frame<
19309            Identity: ICoreWebView2FrameCreatedEventArgs_Impl,
19310            const OFFSET: isize,
19311        >(
19312            this: *mut core::ffi::c_void,
19313            value: *mut *mut core::ffi::c_void,
19314        ) -> windows_core::HRESULT {
19315            unsafe {
19316                let this: &Identity =
19317                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19318                match ICoreWebView2FrameCreatedEventArgs_Impl::Frame(this) {
19319                    Ok(ok__) => {
19320                        value.write(core::mem::transmute(ok__));
19321                        windows_core::HRESULT(0)
19322                    }
19323                    Err(err) => err.into(),
19324                }
19325            }
19326        }
19327        Self {
19328            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19329            Frame: Frame::<Identity, OFFSET>,
19330        }
19331    }
19332    pub fn matches(iid: &windows_core::GUID) -> bool {
19333        iid == &<ICoreWebView2FrameCreatedEventArgs as windows_core::Interface>::IID
19334    }
19335}
19336impl windows_core::RuntimeName for ICoreWebView2FrameCreatedEventArgs {}
19337windows_core::imp::define_interface!(
19338    ICoreWebView2FrameCreatedEventHandler,
19339    ICoreWebView2FrameCreatedEventHandler_Vtbl,
19340    0x38059770_9baa_11eb_a8b3_0242ac130003
19341);
19342windows_core::imp::interface_hierarchy!(
19343    ICoreWebView2FrameCreatedEventHandler,
19344    windows_core::IUnknown
19345);
19346impl ICoreWebView2FrameCreatedEventHandler {
19347    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
19348    where
19349        P0: windows_core::Param<ICoreWebView2>,
19350        P1: windows_core::Param<ICoreWebView2FrameCreatedEventArgs>,
19351    {
19352        unsafe {
19353            (windows_core::Interface::vtable(self).Invoke)(
19354                windows_core::Interface::as_raw(self),
19355                sender.param().abi(),
19356                args.param().abi(),
19357            )
19358            .ok()
19359        }
19360    }
19361}
19362#[repr(C)]
19363#[doc(hidden)]
19364pub struct ICoreWebView2FrameCreatedEventHandler_Vtbl {
19365    pub base__: windows_core::IUnknown_Vtbl,
19366    pub Invoke: unsafe extern "system" fn(
19367        *mut core::ffi::c_void,
19368        *mut core::ffi::c_void,
19369        *mut core::ffi::c_void,
19370    ) -> windows_core::HRESULT,
19371}
19372pub trait ICoreWebView2FrameCreatedEventHandler_Impl: windows_core::IUnknownImpl {
19373    fn Invoke(
19374        &self,
19375        sender: windows_core::Ref<'_, ICoreWebView2>,
19376        args: windows_core::Ref<'_, ICoreWebView2FrameCreatedEventArgs>,
19377    ) -> windows_core::Result<()>;
19378}
19379impl ICoreWebView2FrameCreatedEventHandler_Vtbl {
19380    pub const fn new<Identity: ICoreWebView2FrameCreatedEventHandler_Impl, const OFFSET: isize>(
19381    ) -> Self {
19382        unsafe extern "system" fn Invoke<
19383            Identity: ICoreWebView2FrameCreatedEventHandler_Impl,
19384            const OFFSET: isize,
19385        >(
19386            this: *mut core::ffi::c_void,
19387            sender: *mut core::ffi::c_void,
19388            args: *mut core::ffi::c_void,
19389        ) -> windows_core::HRESULT {
19390            unsafe {
19391                let this: &Identity =
19392                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19393                ICoreWebView2FrameCreatedEventHandler_Impl::Invoke(
19394                    this,
19395                    core::mem::transmute_copy(&sender),
19396                    core::mem::transmute_copy(&args),
19397                )
19398                .into()
19399            }
19400        }
19401        Self {
19402            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19403            Invoke: Invoke::<Identity, OFFSET>,
19404        }
19405    }
19406    pub fn matches(iid: &windows_core::GUID) -> bool {
19407        iid == &<ICoreWebView2FrameCreatedEventHandler as windows_core::Interface>::IID
19408    }
19409}
19410impl windows_core::RuntimeName for ICoreWebView2FrameCreatedEventHandler {}
19411windows_core::imp::define_interface!(
19412    ICoreWebView2FrameDOMContentLoadedEventHandler,
19413    ICoreWebView2FrameDOMContentLoadedEventHandler_Vtbl,
19414    0x38d9520d_340f_4d1e_a775_43fce9753683
19415);
19416windows_core::imp::interface_hierarchy!(
19417    ICoreWebView2FrameDOMContentLoadedEventHandler,
19418    windows_core::IUnknown
19419);
19420impl ICoreWebView2FrameDOMContentLoadedEventHandler {
19421    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
19422    where
19423        P0: windows_core::Param<ICoreWebView2Frame>,
19424        P1: windows_core::Param<ICoreWebView2DOMContentLoadedEventArgs>,
19425    {
19426        unsafe {
19427            (windows_core::Interface::vtable(self).Invoke)(
19428                windows_core::Interface::as_raw(self),
19429                sender.param().abi(),
19430                args.param().abi(),
19431            )
19432            .ok()
19433        }
19434    }
19435}
19436#[repr(C)]
19437#[doc(hidden)]
19438pub struct ICoreWebView2FrameDOMContentLoadedEventHandler_Vtbl {
19439    pub base__: windows_core::IUnknown_Vtbl,
19440    pub Invoke: unsafe extern "system" fn(
19441        *mut core::ffi::c_void,
19442        *mut core::ffi::c_void,
19443        *mut core::ffi::c_void,
19444    ) -> windows_core::HRESULT,
19445}
19446pub trait ICoreWebView2FrameDOMContentLoadedEventHandler_Impl: windows_core::IUnknownImpl {
19447    fn Invoke(
19448        &self,
19449        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
19450        args: windows_core::Ref<'_, ICoreWebView2DOMContentLoadedEventArgs>,
19451    ) -> windows_core::Result<()>;
19452}
19453impl ICoreWebView2FrameDOMContentLoadedEventHandler_Vtbl {
19454    pub const fn new<
19455        Identity: ICoreWebView2FrameDOMContentLoadedEventHandler_Impl,
19456        const OFFSET: isize,
19457    >() -> Self {
19458        unsafe extern "system" fn Invoke<
19459            Identity: ICoreWebView2FrameDOMContentLoadedEventHandler_Impl,
19460            const OFFSET: isize,
19461        >(
19462            this: *mut core::ffi::c_void,
19463            sender: *mut core::ffi::c_void,
19464            args: *mut core::ffi::c_void,
19465        ) -> windows_core::HRESULT {
19466            unsafe {
19467                let this: &Identity =
19468                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19469                ICoreWebView2FrameDOMContentLoadedEventHandler_Impl::Invoke(
19470                    this,
19471                    core::mem::transmute_copy(&sender),
19472                    core::mem::transmute_copy(&args),
19473                )
19474                .into()
19475            }
19476        }
19477        Self {
19478            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19479            Invoke: Invoke::<Identity, OFFSET>,
19480        }
19481    }
19482    pub fn matches(iid: &windows_core::GUID) -> bool {
19483        iid == &<ICoreWebView2FrameDOMContentLoadedEventHandler as windows_core::Interface>::IID
19484    }
19485}
19486impl windows_core::RuntimeName for ICoreWebView2FrameDOMContentLoadedEventHandler {}
19487windows_core::imp::define_interface!(
19488    ICoreWebView2FrameDestroyedEventHandler,
19489    ICoreWebView2FrameDestroyedEventHandler_Vtbl,
19490    0x59dd7b4c_9baa_11eb_a8b3_0242ac130003
19491);
19492windows_core::imp::interface_hierarchy!(
19493    ICoreWebView2FrameDestroyedEventHandler,
19494    windows_core::IUnknown
19495);
19496impl ICoreWebView2FrameDestroyedEventHandler {
19497    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
19498    where
19499        P0: windows_core::Param<ICoreWebView2Frame>,
19500        P1: windows_core::Param<windows_core::IUnknown>,
19501    {
19502        unsafe {
19503            (windows_core::Interface::vtable(self).Invoke)(
19504                windows_core::Interface::as_raw(self),
19505                sender.param().abi(),
19506                args.param().abi(),
19507            )
19508            .ok()
19509        }
19510    }
19511}
19512#[repr(C)]
19513#[doc(hidden)]
19514pub struct ICoreWebView2FrameDestroyedEventHandler_Vtbl {
19515    pub base__: windows_core::IUnknown_Vtbl,
19516    pub Invoke: unsafe extern "system" fn(
19517        *mut core::ffi::c_void,
19518        *mut core::ffi::c_void,
19519        *mut core::ffi::c_void,
19520    ) -> windows_core::HRESULT,
19521}
19522pub trait ICoreWebView2FrameDestroyedEventHandler_Impl: windows_core::IUnknownImpl {
19523    fn Invoke(
19524        &self,
19525        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
19526        args: windows_core::Ref<'_, windows_core::IUnknown>,
19527    ) -> windows_core::Result<()>;
19528}
19529impl ICoreWebView2FrameDestroyedEventHandler_Vtbl {
19530    pub const fn new<
19531        Identity: ICoreWebView2FrameDestroyedEventHandler_Impl,
19532        const OFFSET: isize,
19533    >() -> Self {
19534        unsafe extern "system" fn Invoke<
19535            Identity: ICoreWebView2FrameDestroyedEventHandler_Impl,
19536            const OFFSET: isize,
19537        >(
19538            this: *mut core::ffi::c_void,
19539            sender: *mut core::ffi::c_void,
19540            args: *mut core::ffi::c_void,
19541        ) -> windows_core::HRESULT {
19542            unsafe {
19543                let this: &Identity =
19544                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19545                ICoreWebView2FrameDestroyedEventHandler_Impl::Invoke(
19546                    this,
19547                    core::mem::transmute_copy(&sender),
19548                    core::mem::transmute_copy(&args),
19549                )
19550                .into()
19551            }
19552        }
19553        Self {
19554            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19555            Invoke: Invoke::<Identity, OFFSET>,
19556        }
19557    }
19558    pub fn matches(iid: &windows_core::GUID) -> bool {
19559        iid == &<ICoreWebView2FrameDestroyedEventHandler as windows_core::Interface>::IID
19560    }
19561}
19562impl windows_core::RuntimeName for ICoreWebView2FrameDestroyedEventHandler {}
19563windows_core::imp::define_interface!(
19564    ICoreWebView2FrameInfo,
19565    ICoreWebView2FrameInfo_Vtbl,
19566    0xda86b8a1_bdf3_4f11_9955_528cefa59727
19567);
19568windows_core::imp::interface_hierarchy!(ICoreWebView2FrameInfo, windows_core::IUnknown);
19569impl ICoreWebView2FrameInfo {
19570    pub unsafe fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
19571        unsafe {
19572            (windows_core::Interface::vtable(self).Name)(
19573                windows_core::Interface::as_raw(self),
19574                value as _,
19575            )
19576            .ok()
19577        }
19578    }
19579    pub unsafe fn Source(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
19580        unsafe {
19581            (windows_core::Interface::vtable(self).Source)(
19582                windows_core::Interface::as_raw(self),
19583                value as _,
19584            )
19585            .ok()
19586        }
19587    }
19588}
19589#[repr(C)]
19590#[doc(hidden)]
19591pub struct ICoreWebView2FrameInfo_Vtbl {
19592    pub base__: windows_core::IUnknown_Vtbl,
19593    pub Name: unsafe extern "system" fn(
19594        *mut core::ffi::c_void,
19595        *mut windows_core::PWSTR,
19596    ) -> windows_core::HRESULT,
19597    pub Source: unsafe extern "system" fn(
19598        *mut core::ffi::c_void,
19599        *mut windows_core::PWSTR,
19600    ) -> windows_core::HRESULT,
19601}
19602pub trait ICoreWebView2FrameInfo_Impl: windows_core::IUnknownImpl {
19603    fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
19604    fn Source(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
19605}
19606impl ICoreWebView2FrameInfo_Vtbl {
19607    pub const fn new<Identity: ICoreWebView2FrameInfo_Impl, const OFFSET: isize>() -> Self {
19608        unsafe extern "system" fn Name<
19609            Identity: ICoreWebView2FrameInfo_Impl,
19610            const OFFSET: isize,
19611        >(
19612            this: *mut core::ffi::c_void,
19613            value: *mut windows_core::PWSTR,
19614        ) -> windows_core::HRESULT {
19615            unsafe {
19616                let this: &Identity =
19617                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19618                ICoreWebView2FrameInfo_Impl::Name(this, core::mem::transmute_copy(&value)).into()
19619            }
19620        }
19621        unsafe extern "system" fn Source<
19622            Identity: ICoreWebView2FrameInfo_Impl,
19623            const OFFSET: isize,
19624        >(
19625            this: *mut core::ffi::c_void,
19626            value: *mut windows_core::PWSTR,
19627        ) -> windows_core::HRESULT {
19628            unsafe {
19629                let this: &Identity =
19630                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19631                ICoreWebView2FrameInfo_Impl::Source(this, core::mem::transmute_copy(&value)).into()
19632            }
19633        }
19634        Self {
19635            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19636            Name: Name::<Identity, OFFSET>,
19637            Source: Source::<Identity, OFFSET>,
19638        }
19639    }
19640    pub fn matches(iid: &windows_core::GUID) -> bool {
19641        iid == &<ICoreWebView2FrameInfo as windows_core::Interface>::IID
19642    }
19643}
19644impl windows_core::RuntimeName for ICoreWebView2FrameInfo {}
19645windows_core::imp::define_interface!(
19646    ICoreWebView2FrameInfo2,
19647    ICoreWebView2FrameInfo2_Vtbl,
19648    0x56f85cfa_72c4_11ee_b962_0242ac120002
19649);
19650impl core::ops::Deref for ICoreWebView2FrameInfo2 {
19651    type Target = ICoreWebView2FrameInfo;
19652    fn deref(&self) -> &Self::Target {
19653        unsafe { core::mem::transmute(self) }
19654    }
19655}
19656windows_core::imp::interface_hierarchy!(
19657    ICoreWebView2FrameInfo2,
19658    windows_core::IUnknown,
19659    ICoreWebView2FrameInfo
19660);
19661impl ICoreWebView2FrameInfo2 {
19662    pub unsafe fn ParentFrameInfo(&self) -> windows_core::Result<ICoreWebView2FrameInfo> {
19663        unsafe {
19664            let mut result__ = core::mem::zeroed();
19665            (windows_core::Interface::vtable(self).ParentFrameInfo)(
19666                windows_core::Interface::as_raw(self),
19667                &mut result__,
19668            )
19669            .and_then(|| windows_core::Type::from_abi(result__))
19670        }
19671    }
19672    pub unsafe fn FrameId(&self, id: *mut u32) -> windows_core::Result<()> {
19673        unsafe {
19674            (windows_core::Interface::vtable(self).FrameId)(
19675                windows_core::Interface::as_raw(self),
19676                id as _,
19677            )
19678            .ok()
19679        }
19680    }
19681    pub unsafe fn FrameKind(&self, kind: *mut COREWEBVIEW2_FRAME_KIND) -> windows_core::Result<()> {
19682        unsafe {
19683            (windows_core::Interface::vtable(self).FrameKind)(
19684                windows_core::Interface::as_raw(self),
19685                kind as _,
19686            )
19687            .ok()
19688        }
19689    }
19690}
19691#[repr(C)]
19692#[doc(hidden)]
19693pub struct ICoreWebView2FrameInfo2_Vtbl {
19694    pub base__: ICoreWebView2FrameInfo_Vtbl,
19695    pub ParentFrameInfo: unsafe extern "system" fn(
19696        *mut core::ffi::c_void,
19697        *mut *mut core::ffi::c_void,
19698    ) -> windows_core::HRESULT,
19699    pub FrameId:
19700        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19701    pub FrameKind: unsafe extern "system" fn(
19702        *mut core::ffi::c_void,
19703        *mut COREWEBVIEW2_FRAME_KIND,
19704    ) -> windows_core::HRESULT,
19705}
19706pub trait ICoreWebView2FrameInfo2_Impl: ICoreWebView2FrameInfo_Impl {
19707    fn ParentFrameInfo(&self) -> windows_core::Result<ICoreWebView2FrameInfo>;
19708    fn FrameId(&self, id: *mut u32) -> windows_core::Result<()>;
19709    fn FrameKind(&self, kind: *mut COREWEBVIEW2_FRAME_KIND) -> windows_core::Result<()>;
19710}
19711impl ICoreWebView2FrameInfo2_Vtbl {
19712    pub const fn new<Identity: ICoreWebView2FrameInfo2_Impl, const OFFSET: isize>() -> Self {
19713        unsafe extern "system" fn ParentFrameInfo<
19714            Identity: ICoreWebView2FrameInfo2_Impl,
19715            const OFFSET: isize,
19716        >(
19717            this: *mut core::ffi::c_void,
19718            frameinfo: *mut *mut core::ffi::c_void,
19719        ) -> windows_core::HRESULT {
19720            unsafe {
19721                let this: &Identity =
19722                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19723                match ICoreWebView2FrameInfo2_Impl::ParentFrameInfo(this) {
19724                    Ok(ok__) => {
19725                        frameinfo.write(core::mem::transmute(ok__));
19726                        windows_core::HRESULT(0)
19727                    }
19728                    Err(err) => err.into(),
19729                }
19730            }
19731        }
19732        unsafe extern "system" fn FrameId<
19733            Identity: ICoreWebView2FrameInfo2_Impl,
19734            const OFFSET: isize,
19735        >(
19736            this: *mut core::ffi::c_void,
19737            id: *mut u32,
19738        ) -> windows_core::HRESULT {
19739            unsafe {
19740                let this: &Identity =
19741                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19742                ICoreWebView2FrameInfo2_Impl::FrameId(this, core::mem::transmute_copy(&id)).into()
19743            }
19744        }
19745        unsafe extern "system" fn FrameKind<
19746            Identity: ICoreWebView2FrameInfo2_Impl,
19747            const OFFSET: isize,
19748        >(
19749            this: *mut core::ffi::c_void,
19750            kind: *mut COREWEBVIEW2_FRAME_KIND,
19751        ) -> windows_core::HRESULT {
19752            unsafe {
19753                let this: &Identity =
19754                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19755                ICoreWebView2FrameInfo2_Impl::FrameKind(this, core::mem::transmute_copy(&kind))
19756                    .into()
19757            }
19758        }
19759        Self {
19760            base__: ICoreWebView2FrameInfo_Vtbl::new::<Identity, OFFSET>(),
19761            ParentFrameInfo: ParentFrameInfo::<Identity, OFFSET>,
19762            FrameId: FrameId::<Identity, OFFSET>,
19763            FrameKind: FrameKind::<Identity, OFFSET>,
19764        }
19765    }
19766    pub fn matches(iid: &windows_core::GUID) -> bool {
19767        iid == &<ICoreWebView2FrameInfo2 as windows_core::Interface>::IID
19768            || iid == &<ICoreWebView2FrameInfo as windows_core::Interface>::IID
19769    }
19770}
19771impl windows_core::RuntimeName for ICoreWebView2FrameInfo2 {}
19772windows_core::imp::define_interface!(
19773    ICoreWebView2FrameInfoCollection,
19774    ICoreWebView2FrameInfoCollection_Vtbl,
19775    0x8f834154_d38e_4d90_affb_6800a7272839
19776);
19777windows_core::imp::interface_hierarchy!(ICoreWebView2FrameInfoCollection, windows_core::IUnknown);
19778impl ICoreWebView2FrameInfoCollection {
19779    pub unsafe fn GetIterator(
19780        &self,
19781    ) -> windows_core::Result<ICoreWebView2FrameInfoCollectionIterator> {
19782        unsafe {
19783            let mut result__ = core::mem::zeroed();
19784            (windows_core::Interface::vtable(self).GetIterator)(
19785                windows_core::Interface::as_raw(self),
19786                &mut result__,
19787            )
19788            .and_then(|| windows_core::Type::from_abi(result__))
19789        }
19790    }
19791}
19792#[repr(C)]
19793#[doc(hidden)]
19794pub struct ICoreWebView2FrameInfoCollection_Vtbl {
19795    pub base__: windows_core::IUnknown_Vtbl,
19796    pub GetIterator: unsafe extern "system" fn(
19797        *mut core::ffi::c_void,
19798        *mut *mut core::ffi::c_void,
19799    ) -> windows_core::HRESULT,
19800}
19801pub trait ICoreWebView2FrameInfoCollection_Impl: windows_core::IUnknownImpl {
19802    fn GetIterator(&self) -> windows_core::Result<ICoreWebView2FrameInfoCollectionIterator>;
19803}
19804impl ICoreWebView2FrameInfoCollection_Vtbl {
19805    pub const fn new<Identity: ICoreWebView2FrameInfoCollection_Impl, const OFFSET: isize>() -> Self
19806    {
19807        unsafe extern "system" fn GetIterator<
19808            Identity: ICoreWebView2FrameInfoCollection_Impl,
19809            const OFFSET: isize,
19810        >(
19811            this: *mut core::ffi::c_void,
19812            value: *mut *mut core::ffi::c_void,
19813        ) -> windows_core::HRESULT {
19814            unsafe {
19815                let this: &Identity =
19816                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19817                match ICoreWebView2FrameInfoCollection_Impl::GetIterator(this) {
19818                    Ok(ok__) => {
19819                        value.write(core::mem::transmute(ok__));
19820                        windows_core::HRESULT(0)
19821                    }
19822                    Err(err) => err.into(),
19823                }
19824            }
19825        }
19826        Self {
19827            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19828            GetIterator: GetIterator::<Identity, OFFSET>,
19829        }
19830    }
19831    pub fn matches(iid: &windows_core::GUID) -> bool {
19832        iid == &<ICoreWebView2FrameInfoCollection as windows_core::Interface>::IID
19833    }
19834}
19835impl windows_core::RuntimeName for ICoreWebView2FrameInfoCollection {}
19836windows_core::imp::define_interface!(
19837    ICoreWebView2FrameInfoCollectionIterator,
19838    ICoreWebView2FrameInfoCollectionIterator_Vtbl,
19839    0x1bf89e2d_1b2b_4629_b28f_05099b41bb03
19840);
19841windows_core::imp::interface_hierarchy!(
19842    ICoreWebView2FrameInfoCollectionIterator,
19843    windows_core::IUnknown
19844);
19845impl ICoreWebView2FrameInfoCollectionIterator {
19846    pub unsafe fn HasCurrent(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
19847        unsafe {
19848            (windows_core::Interface::vtable(self).HasCurrent)(
19849                windows_core::Interface::as_raw(self),
19850                value as _,
19851            )
19852            .ok()
19853        }
19854    }
19855    pub unsafe fn GetCurrent(&self) -> windows_core::Result<ICoreWebView2FrameInfo> {
19856        unsafe {
19857            let mut result__ = core::mem::zeroed();
19858            (windows_core::Interface::vtable(self).GetCurrent)(
19859                windows_core::Interface::as_raw(self),
19860                &mut result__,
19861            )
19862            .and_then(|| windows_core::Type::from_abi(result__))
19863        }
19864    }
19865    pub unsafe fn MoveNext(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
19866        unsafe {
19867            (windows_core::Interface::vtable(self).MoveNext)(
19868                windows_core::Interface::as_raw(self),
19869                value as _,
19870            )
19871            .ok()
19872        }
19873    }
19874}
19875#[repr(C)]
19876#[doc(hidden)]
19877pub struct ICoreWebView2FrameInfoCollectionIterator_Vtbl {
19878    pub base__: windows_core::IUnknown_Vtbl,
19879    pub HasCurrent: unsafe extern "system" fn(
19880        *mut core::ffi::c_void,
19881        *mut windows_core::BOOL,
19882    ) -> windows_core::HRESULT,
19883    pub GetCurrent: unsafe extern "system" fn(
19884        *mut core::ffi::c_void,
19885        *mut *mut core::ffi::c_void,
19886    ) -> windows_core::HRESULT,
19887    pub MoveNext: unsafe extern "system" fn(
19888        *mut core::ffi::c_void,
19889        *mut windows_core::BOOL,
19890    ) -> windows_core::HRESULT,
19891}
19892pub trait ICoreWebView2FrameInfoCollectionIterator_Impl: windows_core::IUnknownImpl {
19893    fn HasCurrent(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
19894    fn GetCurrent(&self) -> windows_core::Result<ICoreWebView2FrameInfo>;
19895    fn MoveNext(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
19896}
19897impl ICoreWebView2FrameInfoCollectionIterator_Vtbl {
19898    pub const fn new<
19899        Identity: ICoreWebView2FrameInfoCollectionIterator_Impl,
19900        const OFFSET: isize,
19901    >() -> Self {
19902        unsafe extern "system" fn HasCurrent<
19903            Identity: ICoreWebView2FrameInfoCollectionIterator_Impl,
19904            const OFFSET: isize,
19905        >(
19906            this: *mut core::ffi::c_void,
19907            value: *mut windows_core::BOOL,
19908        ) -> windows_core::HRESULT {
19909            unsafe {
19910                let this: &Identity =
19911                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19912                ICoreWebView2FrameInfoCollectionIterator_Impl::HasCurrent(
19913                    this,
19914                    core::mem::transmute_copy(&value),
19915                )
19916                .into()
19917            }
19918        }
19919        unsafe extern "system" fn GetCurrent<
19920            Identity: ICoreWebView2FrameInfoCollectionIterator_Impl,
19921            const OFFSET: isize,
19922        >(
19923            this: *mut core::ffi::c_void,
19924            value: *mut *mut core::ffi::c_void,
19925        ) -> windows_core::HRESULT {
19926            unsafe {
19927                let this: &Identity =
19928                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19929                match ICoreWebView2FrameInfoCollectionIterator_Impl::GetCurrent(this) {
19930                    Ok(ok__) => {
19931                        value.write(core::mem::transmute(ok__));
19932                        windows_core::HRESULT(0)
19933                    }
19934                    Err(err) => err.into(),
19935                }
19936            }
19937        }
19938        unsafe extern "system" fn MoveNext<
19939            Identity: ICoreWebView2FrameInfoCollectionIterator_Impl,
19940            const OFFSET: isize,
19941        >(
19942            this: *mut core::ffi::c_void,
19943            value: *mut windows_core::BOOL,
19944        ) -> windows_core::HRESULT {
19945            unsafe {
19946                let this: &Identity =
19947                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19948                ICoreWebView2FrameInfoCollectionIterator_Impl::MoveNext(
19949                    this,
19950                    core::mem::transmute_copy(&value),
19951                )
19952                .into()
19953            }
19954        }
19955        Self {
19956            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19957            HasCurrent: HasCurrent::<Identity, OFFSET>,
19958            GetCurrent: GetCurrent::<Identity, OFFSET>,
19959            MoveNext: MoveNext::<Identity, OFFSET>,
19960        }
19961    }
19962    pub fn matches(iid: &windows_core::GUID) -> bool {
19963        iid == &<ICoreWebView2FrameInfoCollectionIterator as windows_core::Interface>::IID
19964    }
19965}
19966impl windows_core::RuntimeName for ICoreWebView2FrameInfoCollectionIterator {}
19967windows_core::imp::define_interface!(
19968    ICoreWebView2FrameNameChangedEventHandler,
19969    ICoreWebView2FrameNameChangedEventHandler_Vtbl,
19970    0x435c7dc8_9baa_11eb_a8b3_0242ac130003
19971);
19972windows_core::imp::interface_hierarchy!(
19973    ICoreWebView2FrameNameChangedEventHandler,
19974    windows_core::IUnknown
19975);
19976impl ICoreWebView2FrameNameChangedEventHandler {
19977    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
19978    where
19979        P0: windows_core::Param<ICoreWebView2Frame>,
19980        P1: windows_core::Param<windows_core::IUnknown>,
19981    {
19982        unsafe {
19983            (windows_core::Interface::vtable(self).Invoke)(
19984                windows_core::Interface::as_raw(self),
19985                sender.param().abi(),
19986                args.param().abi(),
19987            )
19988            .ok()
19989        }
19990    }
19991}
19992#[repr(C)]
19993#[doc(hidden)]
19994pub struct ICoreWebView2FrameNameChangedEventHandler_Vtbl {
19995    pub base__: windows_core::IUnknown_Vtbl,
19996    pub Invoke: unsafe extern "system" fn(
19997        *mut core::ffi::c_void,
19998        *mut core::ffi::c_void,
19999        *mut core::ffi::c_void,
20000    ) -> windows_core::HRESULT,
20001}
20002pub trait ICoreWebView2FrameNameChangedEventHandler_Impl: windows_core::IUnknownImpl {
20003    fn Invoke(
20004        &self,
20005        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
20006        args: windows_core::Ref<'_, windows_core::IUnknown>,
20007    ) -> windows_core::Result<()>;
20008}
20009impl ICoreWebView2FrameNameChangedEventHandler_Vtbl {
20010    pub const fn new<
20011        Identity: ICoreWebView2FrameNameChangedEventHandler_Impl,
20012        const OFFSET: isize,
20013    >() -> Self {
20014        unsafe extern "system" fn Invoke<
20015            Identity: ICoreWebView2FrameNameChangedEventHandler_Impl,
20016            const OFFSET: isize,
20017        >(
20018            this: *mut core::ffi::c_void,
20019            sender: *mut core::ffi::c_void,
20020            args: *mut core::ffi::c_void,
20021        ) -> windows_core::HRESULT {
20022            unsafe {
20023                let this: &Identity =
20024                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20025                ICoreWebView2FrameNameChangedEventHandler_Impl::Invoke(
20026                    this,
20027                    core::mem::transmute_copy(&sender),
20028                    core::mem::transmute_copy(&args),
20029                )
20030                .into()
20031            }
20032        }
20033        Self {
20034            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20035            Invoke: Invoke::<Identity, OFFSET>,
20036        }
20037    }
20038    pub fn matches(iid: &windows_core::GUID) -> bool {
20039        iid == &<ICoreWebView2FrameNameChangedEventHandler as windows_core::Interface>::IID
20040    }
20041}
20042impl windows_core::RuntimeName for ICoreWebView2FrameNameChangedEventHandler {}
20043windows_core::imp::define_interface!(
20044    ICoreWebView2FrameNavigationCompletedEventHandler,
20045    ICoreWebView2FrameNavigationCompletedEventHandler_Vtbl,
20046    0x609302ad_0e36_4f9a_a210_6a45272842a9
20047);
20048windows_core::imp::interface_hierarchy!(
20049    ICoreWebView2FrameNavigationCompletedEventHandler,
20050    windows_core::IUnknown
20051);
20052impl ICoreWebView2FrameNavigationCompletedEventHandler {
20053    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
20054    where
20055        P0: windows_core::Param<ICoreWebView2Frame>,
20056        P1: windows_core::Param<ICoreWebView2NavigationCompletedEventArgs>,
20057    {
20058        unsafe {
20059            (windows_core::Interface::vtable(self).Invoke)(
20060                windows_core::Interface::as_raw(self),
20061                sender.param().abi(),
20062                args.param().abi(),
20063            )
20064            .ok()
20065        }
20066    }
20067}
20068#[repr(C)]
20069#[doc(hidden)]
20070pub struct ICoreWebView2FrameNavigationCompletedEventHandler_Vtbl {
20071    pub base__: windows_core::IUnknown_Vtbl,
20072    pub Invoke: unsafe extern "system" fn(
20073        *mut core::ffi::c_void,
20074        *mut core::ffi::c_void,
20075        *mut core::ffi::c_void,
20076    ) -> windows_core::HRESULT,
20077}
20078pub trait ICoreWebView2FrameNavigationCompletedEventHandler_Impl:
20079    windows_core::IUnknownImpl
20080{
20081    fn Invoke(
20082        &self,
20083        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
20084        args: windows_core::Ref<'_, ICoreWebView2NavigationCompletedEventArgs>,
20085    ) -> windows_core::Result<()>;
20086}
20087impl ICoreWebView2FrameNavigationCompletedEventHandler_Vtbl {
20088    pub const fn new<
20089        Identity: ICoreWebView2FrameNavigationCompletedEventHandler_Impl,
20090        const OFFSET: isize,
20091    >() -> Self {
20092        unsafe extern "system" fn Invoke<
20093            Identity: ICoreWebView2FrameNavigationCompletedEventHandler_Impl,
20094            const OFFSET: isize,
20095        >(
20096            this: *mut core::ffi::c_void,
20097            sender: *mut core::ffi::c_void,
20098            args: *mut core::ffi::c_void,
20099        ) -> windows_core::HRESULT {
20100            unsafe {
20101                let this: &Identity =
20102                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20103                ICoreWebView2FrameNavigationCompletedEventHandler_Impl::Invoke(
20104                    this,
20105                    core::mem::transmute_copy(&sender),
20106                    core::mem::transmute_copy(&args),
20107                )
20108                .into()
20109            }
20110        }
20111        Self {
20112            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20113            Invoke: Invoke::<Identity, OFFSET>,
20114        }
20115    }
20116    pub fn matches(iid: &windows_core::GUID) -> bool {
20117        iid == &<ICoreWebView2FrameNavigationCompletedEventHandler as windows_core::Interface>::IID
20118    }
20119}
20120impl windows_core::RuntimeName for ICoreWebView2FrameNavigationCompletedEventHandler {}
20121windows_core::imp::define_interface!(
20122    ICoreWebView2FrameNavigationStartingEventHandler,
20123    ICoreWebView2FrameNavigationStartingEventHandler_Vtbl,
20124    0xe79908bf_2d5d_4968_83db_263fea2c1da3
20125);
20126windows_core::imp::interface_hierarchy!(
20127    ICoreWebView2FrameNavigationStartingEventHandler,
20128    windows_core::IUnknown
20129);
20130impl ICoreWebView2FrameNavigationStartingEventHandler {
20131    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
20132    where
20133        P0: windows_core::Param<ICoreWebView2Frame>,
20134        P1: windows_core::Param<ICoreWebView2NavigationStartingEventArgs>,
20135    {
20136        unsafe {
20137            (windows_core::Interface::vtable(self).Invoke)(
20138                windows_core::Interface::as_raw(self),
20139                sender.param().abi(),
20140                args.param().abi(),
20141            )
20142            .ok()
20143        }
20144    }
20145}
20146#[repr(C)]
20147#[doc(hidden)]
20148pub struct ICoreWebView2FrameNavigationStartingEventHandler_Vtbl {
20149    pub base__: windows_core::IUnknown_Vtbl,
20150    pub Invoke: unsafe extern "system" fn(
20151        *mut core::ffi::c_void,
20152        *mut core::ffi::c_void,
20153        *mut core::ffi::c_void,
20154    ) -> windows_core::HRESULT,
20155}
20156pub trait ICoreWebView2FrameNavigationStartingEventHandler_Impl:
20157    windows_core::IUnknownImpl
20158{
20159    fn Invoke(
20160        &self,
20161        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
20162        args: windows_core::Ref<'_, ICoreWebView2NavigationStartingEventArgs>,
20163    ) -> windows_core::Result<()>;
20164}
20165impl ICoreWebView2FrameNavigationStartingEventHandler_Vtbl {
20166    pub const fn new<
20167        Identity: ICoreWebView2FrameNavigationStartingEventHandler_Impl,
20168        const OFFSET: isize,
20169    >() -> Self {
20170        unsafe extern "system" fn Invoke<
20171            Identity: ICoreWebView2FrameNavigationStartingEventHandler_Impl,
20172            const OFFSET: isize,
20173        >(
20174            this: *mut core::ffi::c_void,
20175            sender: *mut core::ffi::c_void,
20176            args: *mut core::ffi::c_void,
20177        ) -> windows_core::HRESULT {
20178            unsafe {
20179                let this: &Identity =
20180                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20181                ICoreWebView2FrameNavigationStartingEventHandler_Impl::Invoke(
20182                    this,
20183                    core::mem::transmute_copy(&sender),
20184                    core::mem::transmute_copy(&args),
20185                )
20186                .into()
20187            }
20188        }
20189        Self {
20190            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20191            Invoke: Invoke::<Identity, OFFSET>,
20192        }
20193    }
20194    pub fn matches(iid: &windows_core::GUID) -> bool {
20195        iid == &<ICoreWebView2FrameNavigationStartingEventHandler as windows_core::Interface>::IID
20196    }
20197}
20198impl windows_core::RuntimeName for ICoreWebView2FrameNavigationStartingEventHandler {}
20199windows_core::imp::define_interface!(
20200    ICoreWebView2FramePermissionRequestedEventHandler,
20201    ICoreWebView2FramePermissionRequestedEventHandler_Vtbl,
20202    0x845d0edd_8bd8_429b_9915_4821789f23e9
20203);
20204windows_core::imp::interface_hierarchy!(
20205    ICoreWebView2FramePermissionRequestedEventHandler,
20206    windows_core::IUnknown
20207);
20208impl ICoreWebView2FramePermissionRequestedEventHandler {
20209    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
20210    where
20211        P0: windows_core::Param<ICoreWebView2Frame>,
20212        P1: windows_core::Param<ICoreWebView2PermissionRequestedEventArgs2>,
20213    {
20214        unsafe {
20215            (windows_core::Interface::vtable(self).Invoke)(
20216                windows_core::Interface::as_raw(self),
20217                sender.param().abi(),
20218                args.param().abi(),
20219            )
20220            .ok()
20221        }
20222    }
20223}
20224#[repr(C)]
20225#[doc(hidden)]
20226pub struct ICoreWebView2FramePermissionRequestedEventHandler_Vtbl {
20227    pub base__: windows_core::IUnknown_Vtbl,
20228    pub Invoke: unsafe extern "system" fn(
20229        *mut core::ffi::c_void,
20230        *mut core::ffi::c_void,
20231        *mut core::ffi::c_void,
20232    ) -> windows_core::HRESULT,
20233}
20234pub trait ICoreWebView2FramePermissionRequestedEventHandler_Impl:
20235    windows_core::IUnknownImpl
20236{
20237    fn Invoke(
20238        &self,
20239        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
20240        args: windows_core::Ref<'_, ICoreWebView2PermissionRequestedEventArgs2>,
20241    ) -> windows_core::Result<()>;
20242}
20243impl ICoreWebView2FramePermissionRequestedEventHandler_Vtbl {
20244    pub const fn new<
20245        Identity: ICoreWebView2FramePermissionRequestedEventHandler_Impl,
20246        const OFFSET: isize,
20247    >() -> Self {
20248        unsafe extern "system" fn Invoke<
20249            Identity: ICoreWebView2FramePermissionRequestedEventHandler_Impl,
20250            const OFFSET: isize,
20251        >(
20252            this: *mut core::ffi::c_void,
20253            sender: *mut core::ffi::c_void,
20254            args: *mut core::ffi::c_void,
20255        ) -> windows_core::HRESULT {
20256            unsafe {
20257                let this: &Identity =
20258                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20259                ICoreWebView2FramePermissionRequestedEventHandler_Impl::Invoke(
20260                    this,
20261                    core::mem::transmute_copy(&sender),
20262                    core::mem::transmute_copy(&args),
20263                )
20264                .into()
20265            }
20266        }
20267        Self {
20268            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20269            Invoke: Invoke::<Identity, OFFSET>,
20270        }
20271    }
20272    pub fn matches(iid: &windows_core::GUID) -> bool {
20273        iid == &<ICoreWebView2FramePermissionRequestedEventHandler as windows_core::Interface>::IID
20274    }
20275}
20276impl windows_core::RuntimeName for ICoreWebView2FramePermissionRequestedEventHandler {}
20277windows_core::imp::define_interface!(
20278    ICoreWebView2FrameScreenCaptureStartingEventHandler,
20279    ICoreWebView2FrameScreenCaptureStartingEventHandler_Vtbl,
20280    0xa6c1d8ad_bb80_59c5_895b_fba1698b9309
20281);
20282windows_core::imp::interface_hierarchy!(
20283    ICoreWebView2FrameScreenCaptureStartingEventHandler,
20284    windows_core::IUnknown
20285);
20286impl ICoreWebView2FrameScreenCaptureStartingEventHandler {
20287    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
20288    where
20289        P0: windows_core::Param<ICoreWebView2Frame>,
20290        P1: windows_core::Param<ICoreWebView2ScreenCaptureStartingEventArgs>,
20291    {
20292        unsafe {
20293            (windows_core::Interface::vtable(self).Invoke)(
20294                windows_core::Interface::as_raw(self),
20295                sender.param().abi(),
20296                args.param().abi(),
20297            )
20298            .ok()
20299        }
20300    }
20301}
20302#[repr(C)]
20303#[doc(hidden)]
20304pub struct ICoreWebView2FrameScreenCaptureStartingEventHandler_Vtbl {
20305    pub base__: windows_core::IUnknown_Vtbl,
20306    pub Invoke: unsafe extern "system" fn(
20307        *mut core::ffi::c_void,
20308        *mut core::ffi::c_void,
20309        *mut core::ffi::c_void,
20310    ) -> windows_core::HRESULT,
20311}
20312pub trait ICoreWebView2FrameScreenCaptureStartingEventHandler_Impl:
20313    windows_core::IUnknownImpl
20314{
20315    fn Invoke(
20316        &self,
20317        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
20318        args: windows_core::Ref<'_, ICoreWebView2ScreenCaptureStartingEventArgs>,
20319    ) -> windows_core::Result<()>;
20320}
20321impl ICoreWebView2FrameScreenCaptureStartingEventHandler_Vtbl {
20322    pub const fn new<
20323        Identity: ICoreWebView2FrameScreenCaptureStartingEventHandler_Impl,
20324        const OFFSET: isize,
20325    >() -> Self {
20326        unsafe extern "system" fn Invoke<
20327            Identity: ICoreWebView2FrameScreenCaptureStartingEventHandler_Impl,
20328            const OFFSET: isize,
20329        >(
20330            this: *mut core::ffi::c_void,
20331            sender: *mut core::ffi::c_void,
20332            args: *mut core::ffi::c_void,
20333        ) -> windows_core::HRESULT {
20334            unsafe {
20335                let this: &Identity =
20336                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20337                ICoreWebView2FrameScreenCaptureStartingEventHandler_Impl::Invoke(
20338                    this,
20339                    core::mem::transmute_copy(&sender),
20340                    core::mem::transmute_copy(&args),
20341                )
20342                .into()
20343            }
20344        }
20345        Self {
20346            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20347            Invoke: Invoke::<Identity, OFFSET>,
20348        }
20349    }
20350    pub fn matches(iid: &windows_core::GUID) -> bool {
20351        iid == & < ICoreWebView2FrameScreenCaptureStartingEventHandler as windows_core::Interface >::IID
20352    }
20353}
20354impl windows_core::RuntimeName for ICoreWebView2FrameScreenCaptureStartingEventHandler {}
20355windows_core::imp::define_interface!(
20356    ICoreWebView2FrameWebMessageReceivedEventHandler,
20357    ICoreWebView2FrameWebMessageReceivedEventHandler_Vtbl,
20358    0xe371e005_6d1d_4517_934b_a8f1629c62a5
20359);
20360windows_core::imp::interface_hierarchy!(
20361    ICoreWebView2FrameWebMessageReceivedEventHandler,
20362    windows_core::IUnknown
20363);
20364impl ICoreWebView2FrameWebMessageReceivedEventHandler {
20365    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
20366    where
20367        P0: windows_core::Param<ICoreWebView2Frame>,
20368        P1: windows_core::Param<ICoreWebView2WebMessageReceivedEventArgs>,
20369    {
20370        unsafe {
20371            (windows_core::Interface::vtable(self).Invoke)(
20372                windows_core::Interface::as_raw(self),
20373                sender.param().abi(),
20374                args.param().abi(),
20375            )
20376            .ok()
20377        }
20378    }
20379}
20380#[repr(C)]
20381#[doc(hidden)]
20382pub struct ICoreWebView2FrameWebMessageReceivedEventHandler_Vtbl {
20383    pub base__: windows_core::IUnknown_Vtbl,
20384    pub Invoke: unsafe extern "system" fn(
20385        *mut core::ffi::c_void,
20386        *mut core::ffi::c_void,
20387        *mut core::ffi::c_void,
20388    ) -> windows_core::HRESULT,
20389}
20390pub trait ICoreWebView2FrameWebMessageReceivedEventHandler_Impl:
20391    windows_core::IUnknownImpl
20392{
20393    fn Invoke(
20394        &self,
20395        sender: windows_core::Ref<'_, ICoreWebView2Frame>,
20396        args: windows_core::Ref<'_, ICoreWebView2WebMessageReceivedEventArgs>,
20397    ) -> windows_core::Result<()>;
20398}
20399impl ICoreWebView2FrameWebMessageReceivedEventHandler_Vtbl {
20400    pub const fn new<
20401        Identity: ICoreWebView2FrameWebMessageReceivedEventHandler_Impl,
20402        const OFFSET: isize,
20403    >() -> Self {
20404        unsafe extern "system" fn Invoke<
20405            Identity: ICoreWebView2FrameWebMessageReceivedEventHandler_Impl,
20406            const OFFSET: isize,
20407        >(
20408            this: *mut core::ffi::c_void,
20409            sender: *mut core::ffi::c_void,
20410            args: *mut core::ffi::c_void,
20411        ) -> windows_core::HRESULT {
20412            unsafe {
20413                let this: &Identity =
20414                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20415                ICoreWebView2FrameWebMessageReceivedEventHandler_Impl::Invoke(
20416                    this,
20417                    core::mem::transmute_copy(&sender),
20418                    core::mem::transmute_copy(&args),
20419                )
20420                .into()
20421            }
20422        }
20423        Self {
20424            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20425            Invoke: Invoke::<Identity, OFFSET>,
20426        }
20427    }
20428    pub fn matches(iid: &windows_core::GUID) -> bool {
20429        iid == &<ICoreWebView2FrameWebMessageReceivedEventHandler as windows_core::Interface>::IID
20430    }
20431}
20432impl windows_core::RuntimeName for ICoreWebView2FrameWebMessageReceivedEventHandler {}
20433windows_core::imp::define_interface!(
20434    ICoreWebView2GetCookiesCompletedHandler,
20435    ICoreWebView2GetCookiesCompletedHandler_Vtbl,
20436    0x5a4f5069_5c15_47c3_8646_f4de1c116670
20437);
20438windows_core::imp::interface_hierarchy!(
20439    ICoreWebView2GetCookiesCompletedHandler,
20440    windows_core::IUnknown
20441);
20442impl ICoreWebView2GetCookiesCompletedHandler {
20443    pub unsafe fn Invoke<P1>(
20444        &self,
20445        errorcode: windows_core::HRESULT,
20446        result: P1,
20447    ) -> windows_core::Result<()>
20448    where
20449        P1: windows_core::Param<ICoreWebView2CookieList>,
20450    {
20451        unsafe {
20452            (windows_core::Interface::vtable(self).Invoke)(
20453                windows_core::Interface::as_raw(self),
20454                errorcode,
20455                result.param().abi(),
20456            )
20457            .ok()
20458        }
20459    }
20460}
20461#[repr(C)]
20462#[doc(hidden)]
20463pub struct ICoreWebView2GetCookiesCompletedHandler_Vtbl {
20464    pub base__: windows_core::IUnknown_Vtbl,
20465    pub Invoke: unsafe extern "system" fn(
20466        *mut core::ffi::c_void,
20467        windows_core::HRESULT,
20468        *mut core::ffi::c_void,
20469    ) -> windows_core::HRESULT,
20470}
20471pub trait ICoreWebView2GetCookiesCompletedHandler_Impl: windows_core::IUnknownImpl {
20472    fn Invoke(
20473        &self,
20474        errorcode: windows_core::HRESULT,
20475        result: windows_core::Ref<'_, ICoreWebView2CookieList>,
20476    ) -> windows_core::Result<()>;
20477}
20478impl ICoreWebView2GetCookiesCompletedHandler_Vtbl {
20479    pub const fn new<
20480        Identity: ICoreWebView2GetCookiesCompletedHandler_Impl,
20481        const OFFSET: isize,
20482    >() -> Self {
20483        unsafe extern "system" fn Invoke<
20484            Identity: ICoreWebView2GetCookiesCompletedHandler_Impl,
20485            const OFFSET: isize,
20486        >(
20487            this: *mut core::ffi::c_void,
20488            errorcode: windows_core::HRESULT,
20489            result: *mut core::ffi::c_void,
20490        ) -> windows_core::HRESULT {
20491            unsafe {
20492                let this: &Identity =
20493                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20494                ICoreWebView2GetCookiesCompletedHandler_Impl::Invoke(
20495                    this,
20496                    core::mem::transmute_copy(&errorcode),
20497                    core::mem::transmute_copy(&result),
20498                )
20499                .into()
20500            }
20501        }
20502        Self {
20503            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20504            Invoke: Invoke::<Identity, OFFSET>,
20505        }
20506    }
20507    pub fn matches(iid: &windows_core::GUID) -> bool {
20508        iid == &<ICoreWebView2GetCookiesCompletedHandler as windows_core::Interface>::IID
20509    }
20510}
20511impl windows_core::RuntimeName for ICoreWebView2GetCookiesCompletedHandler {}
20512windows_core::imp::define_interface!(
20513    ICoreWebView2GetFaviconCompletedHandler,
20514    ICoreWebView2GetFaviconCompletedHandler_Vtbl,
20515    0xa2508329_7da8_49d7_8c05_fa125e4aee8d
20516);
20517windows_core::imp::interface_hierarchy!(
20518    ICoreWebView2GetFaviconCompletedHandler,
20519    windows_core::IUnknown
20520);
20521impl ICoreWebView2GetFaviconCompletedHandler {
20522    pub unsafe fn Invoke<P1>(
20523        &self,
20524        errorcode: windows_core::HRESULT,
20525        result: P1,
20526    ) -> windows_core::Result<()>
20527    where
20528        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
20529    {
20530        unsafe {
20531            (windows_core::Interface::vtable(self).Invoke)(
20532                windows_core::Interface::as_raw(self),
20533                errorcode,
20534                result.param().abi(),
20535            )
20536            .ok()
20537        }
20538    }
20539}
20540#[repr(C)]
20541#[doc(hidden)]
20542pub struct ICoreWebView2GetFaviconCompletedHandler_Vtbl {
20543    pub base__: windows_core::IUnknown_Vtbl,
20544    pub Invoke: unsafe extern "system" fn(
20545        *mut core::ffi::c_void,
20546        windows_core::HRESULT,
20547        *mut core::ffi::c_void,
20548    ) -> windows_core::HRESULT,
20549}
20550pub trait ICoreWebView2GetFaviconCompletedHandler_Impl: windows_core::IUnknownImpl {
20551    fn Invoke(
20552        &self,
20553        errorcode: windows_core::HRESULT,
20554        result: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
20555    ) -> windows_core::Result<()>;
20556}
20557impl ICoreWebView2GetFaviconCompletedHandler_Vtbl {
20558    pub const fn new<
20559        Identity: ICoreWebView2GetFaviconCompletedHandler_Impl,
20560        const OFFSET: isize,
20561    >() -> Self {
20562        unsafe extern "system" fn Invoke<
20563            Identity: ICoreWebView2GetFaviconCompletedHandler_Impl,
20564            const OFFSET: isize,
20565        >(
20566            this: *mut core::ffi::c_void,
20567            errorcode: windows_core::HRESULT,
20568            result: *mut core::ffi::c_void,
20569        ) -> windows_core::HRESULT {
20570            unsafe {
20571                let this: &Identity =
20572                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20573                ICoreWebView2GetFaviconCompletedHandler_Impl::Invoke(
20574                    this,
20575                    core::mem::transmute_copy(&errorcode),
20576                    core::mem::transmute_copy(&result),
20577                )
20578                .into()
20579            }
20580        }
20581        Self {
20582            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20583            Invoke: Invoke::<Identity, OFFSET>,
20584        }
20585    }
20586    pub fn matches(iid: &windows_core::GUID) -> bool {
20587        iid == &<ICoreWebView2GetFaviconCompletedHandler as windows_core::Interface>::IID
20588    }
20589}
20590impl windows_core::RuntimeName for ICoreWebView2GetFaviconCompletedHandler {}
20591windows_core::imp::define_interface!(
20592    ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler,
20593    ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Vtbl,
20594    0x38274481_a15c_4563_94cf_990edc9aeb95
20595);
20596windows_core::imp::interface_hierarchy!(
20597    ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler,
20598    windows_core::IUnknown
20599);
20600impl ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler {
20601    pub unsafe fn Invoke<P1>(
20602        &self,
20603        errorcode: windows_core::HRESULT,
20604        result: P1,
20605    ) -> windows_core::Result<()>
20606    where
20607        P1: windows_core::Param<ICoreWebView2PermissionSettingCollectionView>,
20608    {
20609        unsafe {
20610            (windows_core::Interface::vtable(self).Invoke)(
20611                windows_core::Interface::as_raw(self),
20612                errorcode,
20613                result.param().abi(),
20614            )
20615            .ok()
20616        }
20617    }
20618}
20619#[repr(C)]
20620#[doc(hidden)]
20621pub struct ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Vtbl {
20622    pub base__: windows_core::IUnknown_Vtbl,
20623    pub Invoke: unsafe extern "system" fn(
20624        *mut core::ffi::c_void,
20625        windows_core::HRESULT,
20626        *mut core::ffi::c_void,
20627    ) -> windows_core::HRESULT,
20628}
20629pub trait ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Impl:
20630    windows_core::IUnknownImpl
20631{
20632    fn Invoke(
20633        &self,
20634        errorcode: windows_core::HRESULT,
20635        result: windows_core::Ref<'_, ICoreWebView2PermissionSettingCollectionView>,
20636    ) -> windows_core::Result<()>;
20637}
20638impl ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Vtbl {
20639    pub const fn new<
20640        Identity: ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Impl,
20641        const OFFSET: isize,
20642    >() -> Self {
20643        unsafe extern "system" fn Invoke<
20644            Identity: ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Impl,
20645            const OFFSET: isize,
20646        >(
20647            this: *mut core::ffi::c_void,
20648            errorcode: windows_core::HRESULT,
20649            result: *mut core::ffi::c_void,
20650        ) -> windows_core::HRESULT {
20651            unsafe {
20652                let this: &Identity =
20653                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20654                ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Impl::Invoke(
20655                    this,
20656                    core::mem::transmute_copy(&errorcode),
20657                    core::mem::transmute_copy(&result),
20658                )
20659                .into()
20660            }
20661        }
20662        Self {
20663            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20664            Invoke: Invoke::<Identity, OFFSET>,
20665        }
20666    }
20667    pub fn matches(iid: &windows_core::GUID) -> bool {
20668        iid == & < ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler as windows_core::Interface >::IID
20669    }
20670}
20671impl windows_core::RuntimeName for ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler {}
20672windows_core::imp::define_interface!(
20673    ICoreWebView2GetProcessExtendedInfosCompletedHandler,
20674    ICoreWebView2GetProcessExtendedInfosCompletedHandler_Vtbl,
20675    0xf45e55aa_3bc2_11ee_be56_0242ac120002
20676);
20677windows_core::imp::interface_hierarchy!(
20678    ICoreWebView2GetProcessExtendedInfosCompletedHandler,
20679    windows_core::IUnknown
20680);
20681impl ICoreWebView2GetProcessExtendedInfosCompletedHandler {
20682    pub unsafe fn Invoke<P1>(
20683        &self,
20684        errorcode: windows_core::HRESULT,
20685        result: P1,
20686    ) -> windows_core::Result<()>
20687    where
20688        P1: windows_core::Param<ICoreWebView2ProcessExtendedInfoCollection>,
20689    {
20690        unsafe {
20691            (windows_core::Interface::vtable(self).Invoke)(
20692                windows_core::Interface::as_raw(self),
20693                errorcode,
20694                result.param().abi(),
20695            )
20696            .ok()
20697        }
20698    }
20699}
20700#[repr(C)]
20701#[doc(hidden)]
20702pub struct ICoreWebView2GetProcessExtendedInfosCompletedHandler_Vtbl {
20703    pub base__: windows_core::IUnknown_Vtbl,
20704    pub Invoke: unsafe extern "system" fn(
20705        *mut core::ffi::c_void,
20706        windows_core::HRESULT,
20707        *mut core::ffi::c_void,
20708    ) -> windows_core::HRESULT,
20709}
20710pub trait ICoreWebView2GetProcessExtendedInfosCompletedHandler_Impl:
20711    windows_core::IUnknownImpl
20712{
20713    fn Invoke(
20714        &self,
20715        errorcode: windows_core::HRESULT,
20716        result: windows_core::Ref<'_, ICoreWebView2ProcessExtendedInfoCollection>,
20717    ) -> windows_core::Result<()>;
20718}
20719impl ICoreWebView2GetProcessExtendedInfosCompletedHandler_Vtbl {
20720    pub const fn new<
20721        Identity: ICoreWebView2GetProcessExtendedInfosCompletedHandler_Impl,
20722        const OFFSET: isize,
20723    >() -> Self {
20724        unsafe extern "system" fn Invoke<
20725            Identity: ICoreWebView2GetProcessExtendedInfosCompletedHandler_Impl,
20726            const OFFSET: isize,
20727        >(
20728            this: *mut core::ffi::c_void,
20729            errorcode: windows_core::HRESULT,
20730            result: *mut core::ffi::c_void,
20731        ) -> windows_core::HRESULT {
20732            unsafe {
20733                let this: &Identity =
20734                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20735                ICoreWebView2GetProcessExtendedInfosCompletedHandler_Impl::Invoke(
20736                    this,
20737                    core::mem::transmute_copy(&errorcode),
20738                    core::mem::transmute_copy(&result),
20739                )
20740                .into()
20741            }
20742        }
20743        Self {
20744            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20745            Invoke: Invoke::<Identity, OFFSET>,
20746        }
20747    }
20748    pub fn matches(iid: &windows_core::GUID) -> bool {
20749        iid == & < ICoreWebView2GetProcessExtendedInfosCompletedHandler as windows_core::Interface >::IID
20750    }
20751}
20752impl windows_core::RuntimeName for ICoreWebView2GetProcessExtendedInfosCompletedHandler {}
20753windows_core::imp::define_interface!(
20754    ICoreWebView2HistoryChangedEventHandler,
20755    ICoreWebView2HistoryChangedEventHandler_Vtbl,
20756    0xc79a420c_efd9_4058_9295_3e8b4bcab645
20757);
20758windows_core::imp::interface_hierarchy!(
20759    ICoreWebView2HistoryChangedEventHandler,
20760    windows_core::IUnknown
20761);
20762impl ICoreWebView2HistoryChangedEventHandler {
20763    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
20764    where
20765        P0: windows_core::Param<ICoreWebView2>,
20766        P1: windows_core::Param<windows_core::IUnknown>,
20767    {
20768        unsafe {
20769            (windows_core::Interface::vtable(self).Invoke)(
20770                windows_core::Interface::as_raw(self),
20771                sender.param().abi(),
20772                args.param().abi(),
20773            )
20774            .ok()
20775        }
20776    }
20777}
20778#[repr(C)]
20779#[doc(hidden)]
20780pub struct ICoreWebView2HistoryChangedEventHandler_Vtbl {
20781    pub base__: windows_core::IUnknown_Vtbl,
20782    pub Invoke: unsafe extern "system" fn(
20783        *mut core::ffi::c_void,
20784        *mut core::ffi::c_void,
20785        *mut core::ffi::c_void,
20786    ) -> windows_core::HRESULT,
20787}
20788pub trait ICoreWebView2HistoryChangedEventHandler_Impl: windows_core::IUnknownImpl {
20789    fn Invoke(
20790        &self,
20791        sender: windows_core::Ref<'_, ICoreWebView2>,
20792        args: windows_core::Ref<'_, windows_core::IUnknown>,
20793    ) -> windows_core::Result<()>;
20794}
20795impl ICoreWebView2HistoryChangedEventHandler_Vtbl {
20796    pub const fn new<
20797        Identity: ICoreWebView2HistoryChangedEventHandler_Impl,
20798        const OFFSET: isize,
20799    >() -> Self {
20800        unsafe extern "system" fn Invoke<
20801            Identity: ICoreWebView2HistoryChangedEventHandler_Impl,
20802            const OFFSET: isize,
20803        >(
20804            this: *mut core::ffi::c_void,
20805            sender: *mut core::ffi::c_void,
20806            args: *mut core::ffi::c_void,
20807        ) -> windows_core::HRESULT {
20808            unsafe {
20809                let this: &Identity =
20810                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20811                ICoreWebView2HistoryChangedEventHandler_Impl::Invoke(
20812                    this,
20813                    core::mem::transmute_copy(&sender),
20814                    core::mem::transmute_copy(&args),
20815                )
20816                .into()
20817            }
20818        }
20819        Self {
20820            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20821            Invoke: Invoke::<Identity, OFFSET>,
20822        }
20823    }
20824    pub fn matches(iid: &windows_core::GUID) -> bool {
20825        iid == &<ICoreWebView2HistoryChangedEventHandler as windows_core::Interface>::IID
20826    }
20827}
20828impl windows_core::RuntimeName for ICoreWebView2HistoryChangedEventHandler {}
20829windows_core::imp::define_interface!(
20830    ICoreWebView2HttpHeadersCollectionIterator,
20831    ICoreWebView2HttpHeadersCollectionIterator_Vtbl,
20832    0x0702fc30_f43b_47bb_ab52_a42cb552ad9f
20833);
20834windows_core::imp::interface_hierarchy!(
20835    ICoreWebView2HttpHeadersCollectionIterator,
20836    windows_core::IUnknown
20837);
20838impl ICoreWebView2HttpHeadersCollectionIterator {
20839    pub unsafe fn GetCurrentHeader(
20840        &self,
20841        name: *mut windows_core::PWSTR,
20842        value: *mut windows_core::PWSTR,
20843    ) -> windows_core::Result<()> {
20844        unsafe {
20845            (windows_core::Interface::vtable(self).GetCurrentHeader)(
20846                windows_core::Interface::as_raw(self),
20847                name as _,
20848                value as _,
20849            )
20850            .ok()
20851        }
20852    }
20853    pub unsafe fn HasCurrentHeader(
20854        &self,
20855        hascurrent: *mut windows_core::BOOL,
20856    ) -> windows_core::Result<()> {
20857        unsafe {
20858            (windows_core::Interface::vtable(self).HasCurrentHeader)(
20859                windows_core::Interface::as_raw(self),
20860                hascurrent as _,
20861            )
20862            .ok()
20863        }
20864    }
20865    pub unsafe fn MoveNext(&self, hasnext: *mut windows_core::BOOL) -> windows_core::Result<()> {
20866        unsafe {
20867            (windows_core::Interface::vtable(self).MoveNext)(
20868                windows_core::Interface::as_raw(self),
20869                hasnext as _,
20870            )
20871            .ok()
20872        }
20873    }
20874}
20875#[repr(C)]
20876#[doc(hidden)]
20877pub struct ICoreWebView2HttpHeadersCollectionIterator_Vtbl {
20878    pub base__: windows_core::IUnknown_Vtbl,
20879    pub GetCurrentHeader: unsafe extern "system" fn(
20880        *mut core::ffi::c_void,
20881        *mut windows_core::PWSTR,
20882        *mut windows_core::PWSTR,
20883    ) -> windows_core::HRESULT,
20884    pub HasCurrentHeader: unsafe extern "system" fn(
20885        *mut core::ffi::c_void,
20886        *mut windows_core::BOOL,
20887    ) -> windows_core::HRESULT,
20888    pub MoveNext: unsafe extern "system" fn(
20889        *mut core::ffi::c_void,
20890        *mut windows_core::BOOL,
20891    ) -> windows_core::HRESULT,
20892}
20893pub trait ICoreWebView2HttpHeadersCollectionIterator_Impl: windows_core::IUnknownImpl {
20894    fn GetCurrentHeader(
20895        &self,
20896        name: *mut windows_core::PWSTR,
20897        value: *mut windows_core::PWSTR,
20898    ) -> windows_core::Result<()>;
20899    fn HasCurrentHeader(&self, hascurrent: *mut windows_core::BOOL) -> windows_core::Result<()>;
20900    fn MoveNext(&self, hasnext: *mut windows_core::BOOL) -> windows_core::Result<()>;
20901}
20902impl ICoreWebView2HttpHeadersCollectionIterator_Vtbl {
20903    pub const fn new<
20904        Identity: ICoreWebView2HttpHeadersCollectionIterator_Impl,
20905        const OFFSET: isize,
20906    >() -> Self {
20907        unsafe extern "system" fn GetCurrentHeader<
20908            Identity: ICoreWebView2HttpHeadersCollectionIterator_Impl,
20909            const OFFSET: isize,
20910        >(
20911            this: *mut core::ffi::c_void,
20912            name: *mut windows_core::PWSTR,
20913            value: *mut windows_core::PWSTR,
20914        ) -> windows_core::HRESULT {
20915            unsafe {
20916                let this: &Identity =
20917                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20918                ICoreWebView2HttpHeadersCollectionIterator_Impl::GetCurrentHeader(
20919                    this,
20920                    core::mem::transmute_copy(&name),
20921                    core::mem::transmute_copy(&value),
20922                )
20923                .into()
20924            }
20925        }
20926        unsafe extern "system" fn HasCurrentHeader<
20927            Identity: ICoreWebView2HttpHeadersCollectionIterator_Impl,
20928            const OFFSET: isize,
20929        >(
20930            this: *mut core::ffi::c_void,
20931            hascurrent: *mut windows_core::BOOL,
20932        ) -> windows_core::HRESULT {
20933            unsafe {
20934                let this: &Identity =
20935                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20936                ICoreWebView2HttpHeadersCollectionIterator_Impl::HasCurrentHeader(
20937                    this,
20938                    core::mem::transmute_copy(&hascurrent),
20939                )
20940                .into()
20941            }
20942        }
20943        unsafe extern "system" fn MoveNext<
20944            Identity: ICoreWebView2HttpHeadersCollectionIterator_Impl,
20945            const OFFSET: isize,
20946        >(
20947            this: *mut core::ffi::c_void,
20948            hasnext: *mut windows_core::BOOL,
20949        ) -> windows_core::HRESULT {
20950            unsafe {
20951                let this: &Identity =
20952                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20953                ICoreWebView2HttpHeadersCollectionIterator_Impl::MoveNext(
20954                    this,
20955                    core::mem::transmute_copy(&hasnext),
20956                )
20957                .into()
20958            }
20959        }
20960        Self {
20961            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20962            GetCurrentHeader: GetCurrentHeader::<Identity, OFFSET>,
20963            HasCurrentHeader: HasCurrentHeader::<Identity, OFFSET>,
20964            MoveNext: MoveNext::<Identity, OFFSET>,
20965        }
20966    }
20967    pub fn matches(iid: &windows_core::GUID) -> bool {
20968        iid == &<ICoreWebView2HttpHeadersCollectionIterator as windows_core::Interface>::IID
20969    }
20970}
20971impl windows_core::RuntimeName for ICoreWebView2HttpHeadersCollectionIterator {}
20972windows_core::imp::define_interface!(
20973    ICoreWebView2HttpRequestHeaders,
20974    ICoreWebView2HttpRequestHeaders_Vtbl,
20975    0xe86cac0e_5523_465c_b536_8fb9fc8c8c60
20976);
20977windows_core::imp::interface_hierarchy!(ICoreWebView2HttpRequestHeaders, windows_core::IUnknown);
20978impl ICoreWebView2HttpRequestHeaders {
20979    pub unsafe fn GetHeader<P0>(
20980        &self,
20981        name: P0,
20982        value: *mut windows_core::PWSTR,
20983    ) -> windows_core::Result<()>
20984    where
20985        P0: windows_core::Param<windows_core::PCWSTR>,
20986    {
20987        unsafe {
20988            (windows_core::Interface::vtable(self).GetHeader)(
20989                windows_core::Interface::as_raw(self),
20990                name.param().abi(),
20991                value as _,
20992            )
20993            .ok()
20994        }
20995    }
20996    pub unsafe fn GetHeaders<P0>(
20997        &self,
20998        name: P0,
20999    ) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator>
21000    where
21001        P0: windows_core::Param<windows_core::PCWSTR>,
21002    {
21003        unsafe {
21004            let mut result__ = core::mem::zeroed();
21005            (windows_core::Interface::vtable(self).GetHeaders)(
21006                windows_core::Interface::as_raw(self),
21007                name.param().abi(),
21008                &mut result__,
21009            )
21010            .and_then(|| windows_core::Type::from_abi(result__))
21011        }
21012    }
21013    pub unsafe fn Contains<P0>(
21014        &self,
21015        name: P0,
21016        value: *mut windows_core::BOOL,
21017    ) -> windows_core::Result<()>
21018    where
21019        P0: windows_core::Param<windows_core::PCWSTR>,
21020    {
21021        unsafe {
21022            (windows_core::Interface::vtable(self).Contains)(
21023                windows_core::Interface::as_raw(self),
21024                name.param().abi(),
21025                value as _,
21026            )
21027            .ok()
21028        }
21029    }
21030    pub unsafe fn SetHeader<P0, P1>(&self, name: P0, value: P1) -> windows_core::Result<()>
21031    where
21032        P0: windows_core::Param<windows_core::PCWSTR>,
21033        P1: windows_core::Param<windows_core::PCWSTR>,
21034    {
21035        unsafe {
21036            (windows_core::Interface::vtable(self).SetHeader)(
21037                windows_core::Interface::as_raw(self),
21038                name.param().abi(),
21039                value.param().abi(),
21040            )
21041            .ok()
21042        }
21043    }
21044    pub unsafe fn RemoveHeader<P0>(&self, name: P0) -> windows_core::Result<()>
21045    where
21046        P0: windows_core::Param<windows_core::PCWSTR>,
21047    {
21048        unsafe {
21049            (windows_core::Interface::vtable(self).RemoveHeader)(
21050                windows_core::Interface::as_raw(self),
21051                name.param().abi(),
21052            )
21053            .ok()
21054        }
21055    }
21056    pub unsafe fn GetIterator(
21057        &self,
21058    ) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator> {
21059        unsafe {
21060            let mut result__ = core::mem::zeroed();
21061            (windows_core::Interface::vtable(self).GetIterator)(
21062                windows_core::Interface::as_raw(self),
21063                &mut result__,
21064            )
21065            .and_then(|| windows_core::Type::from_abi(result__))
21066        }
21067    }
21068}
21069#[repr(C)]
21070#[doc(hidden)]
21071pub struct ICoreWebView2HttpRequestHeaders_Vtbl {
21072    pub base__: windows_core::IUnknown_Vtbl,
21073    pub GetHeader: unsafe extern "system" fn(
21074        *mut core::ffi::c_void,
21075        windows_core::PCWSTR,
21076        *mut windows_core::PWSTR,
21077    ) -> windows_core::HRESULT,
21078    pub GetHeaders: unsafe extern "system" fn(
21079        *mut core::ffi::c_void,
21080        windows_core::PCWSTR,
21081        *mut *mut core::ffi::c_void,
21082    ) -> windows_core::HRESULT,
21083    pub Contains: unsafe extern "system" fn(
21084        *mut core::ffi::c_void,
21085        windows_core::PCWSTR,
21086        *mut windows_core::BOOL,
21087    ) -> windows_core::HRESULT,
21088    pub SetHeader: unsafe extern "system" fn(
21089        *mut core::ffi::c_void,
21090        windows_core::PCWSTR,
21091        windows_core::PCWSTR,
21092    ) -> windows_core::HRESULT,
21093    pub RemoveHeader: unsafe extern "system" fn(
21094        *mut core::ffi::c_void,
21095        windows_core::PCWSTR,
21096    ) -> windows_core::HRESULT,
21097    pub GetIterator: unsafe extern "system" fn(
21098        *mut core::ffi::c_void,
21099        *mut *mut core::ffi::c_void,
21100    ) -> windows_core::HRESULT,
21101}
21102pub trait ICoreWebView2HttpRequestHeaders_Impl: windows_core::IUnknownImpl {
21103    fn GetHeader(
21104        &self,
21105        name: &windows_core::PCWSTR,
21106        value: *mut windows_core::PWSTR,
21107    ) -> windows_core::Result<()>;
21108    fn GetHeaders(
21109        &self,
21110        name: &windows_core::PCWSTR,
21111    ) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator>;
21112    fn Contains(
21113        &self,
21114        name: &windows_core::PCWSTR,
21115        value: *mut windows_core::BOOL,
21116    ) -> windows_core::Result<()>;
21117    fn SetHeader(
21118        &self,
21119        name: &windows_core::PCWSTR,
21120        value: &windows_core::PCWSTR,
21121    ) -> windows_core::Result<()>;
21122    fn RemoveHeader(&self, name: &windows_core::PCWSTR) -> windows_core::Result<()>;
21123    fn GetIterator(&self) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator>;
21124}
21125impl ICoreWebView2HttpRequestHeaders_Vtbl {
21126    pub const fn new<Identity: ICoreWebView2HttpRequestHeaders_Impl, const OFFSET: isize>() -> Self
21127    {
21128        unsafe extern "system" fn GetHeader<
21129            Identity: ICoreWebView2HttpRequestHeaders_Impl,
21130            const OFFSET: isize,
21131        >(
21132            this: *mut core::ffi::c_void,
21133            name: windows_core::PCWSTR,
21134            value: *mut windows_core::PWSTR,
21135        ) -> windows_core::HRESULT {
21136            unsafe {
21137                let this: &Identity =
21138                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21139                ICoreWebView2HttpRequestHeaders_Impl::GetHeader(
21140                    this,
21141                    core::mem::transmute(&name),
21142                    core::mem::transmute_copy(&value),
21143                )
21144                .into()
21145            }
21146        }
21147        unsafe extern "system" fn GetHeaders<
21148            Identity: ICoreWebView2HttpRequestHeaders_Impl,
21149            const OFFSET: isize,
21150        >(
21151            this: *mut core::ffi::c_void,
21152            name: windows_core::PCWSTR,
21153            value: *mut *mut core::ffi::c_void,
21154        ) -> windows_core::HRESULT {
21155            unsafe {
21156                let this: &Identity =
21157                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21158                match ICoreWebView2HttpRequestHeaders_Impl::GetHeaders(
21159                    this,
21160                    core::mem::transmute(&name),
21161                ) {
21162                    Ok(ok__) => {
21163                        value.write(core::mem::transmute(ok__));
21164                        windows_core::HRESULT(0)
21165                    }
21166                    Err(err) => err.into(),
21167                }
21168            }
21169        }
21170        unsafe extern "system" fn Contains<
21171            Identity: ICoreWebView2HttpRequestHeaders_Impl,
21172            const OFFSET: isize,
21173        >(
21174            this: *mut core::ffi::c_void,
21175            name: windows_core::PCWSTR,
21176            value: *mut windows_core::BOOL,
21177        ) -> windows_core::HRESULT {
21178            unsafe {
21179                let this: &Identity =
21180                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21181                ICoreWebView2HttpRequestHeaders_Impl::Contains(
21182                    this,
21183                    core::mem::transmute(&name),
21184                    core::mem::transmute_copy(&value),
21185                )
21186                .into()
21187            }
21188        }
21189        unsafe extern "system" fn SetHeader<
21190            Identity: ICoreWebView2HttpRequestHeaders_Impl,
21191            const OFFSET: isize,
21192        >(
21193            this: *mut core::ffi::c_void,
21194            name: windows_core::PCWSTR,
21195            value: windows_core::PCWSTR,
21196        ) -> windows_core::HRESULT {
21197            unsafe {
21198                let this: &Identity =
21199                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21200                ICoreWebView2HttpRequestHeaders_Impl::SetHeader(
21201                    this,
21202                    core::mem::transmute(&name),
21203                    core::mem::transmute(&value),
21204                )
21205                .into()
21206            }
21207        }
21208        unsafe extern "system" fn RemoveHeader<
21209            Identity: ICoreWebView2HttpRequestHeaders_Impl,
21210            const OFFSET: isize,
21211        >(
21212            this: *mut core::ffi::c_void,
21213            name: windows_core::PCWSTR,
21214        ) -> windows_core::HRESULT {
21215            unsafe {
21216                let this: &Identity =
21217                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21218                ICoreWebView2HttpRequestHeaders_Impl::RemoveHeader(
21219                    this,
21220                    core::mem::transmute(&name),
21221                )
21222                .into()
21223            }
21224        }
21225        unsafe extern "system" fn GetIterator<
21226            Identity: ICoreWebView2HttpRequestHeaders_Impl,
21227            const OFFSET: isize,
21228        >(
21229            this: *mut core::ffi::c_void,
21230            value: *mut *mut core::ffi::c_void,
21231        ) -> windows_core::HRESULT {
21232            unsafe {
21233                let this: &Identity =
21234                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21235                match ICoreWebView2HttpRequestHeaders_Impl::GetIterator(this) {
21236                    Ok(ok__) => {
21237                        value.write(core::mem::transmute(ok__));
21238                        windows_core::HRESULT(0)
21239                    }
21240                    Err(err) => err.into(),
21241                }
21242            }
21243        }
21244        Self {
21245            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21246            GetHeader: GetHeader::<Identity, OFFSET>,
21247            GetHeaders: GetHeaders::<Identity, OFFSET>,
21248            Contains: Contains::<Identity, OFFSET>,
21249            SetHeader: SetHeader::<Identity, OFFSET>,
21250            RemoveHeader: RemoveHeader::<Identity, OFFSET>,
21251            GetIterator: GetIterator::<Identity, OFFSET>,
21252        }
21253    }
21254    pub fn matches(iid: &windows_core::GUID) -> bool {
21255        iid == &<ICoreWebView2HttpRequestHeaders as windows_core::Interface>::IID
21256    }
21257}
21258impl windows_core::RuntimeName for ICoreWebView2HttpRequestHeaders {}
21259windows_core::imp::define_interface!(
21260    ICoreWebView2HttpResponseHeaders,
21261    ICoreWebView2HttpResponseHeaders_Vtbl,
21262    0x03c5ff5a_9b45_4a88_881c_89a9f328619c
21263);
21264windows_core::imp::interface_hierarchy!(ICoreWebView2HttpResponseHeaders, windows_core::IUnknown);
21265impl ICoreWebView2HttpResponseHeaders {
21266    pub unsafe fn AppendHeader<P0, P1>(&self, name: P0, value: P1) -> windows_core::Result<()>
21267    where
21268        P0: windows_core::Param<windows_core::PCWSTR>,
21269        P1: windows_core::Param<windows_core::PCWSTR>,
21270    {
21271        unsafe {
21272            (windows_core::Interface::vtable(self).AppendHeader)(
21273                windows_core::Interface::as_raw(self),
21274                name.param().abi(),
21275                value.param().abi(),
21276            )
21277            .ok()
21278        }
21279    }
21280    pub unsafe fn Contains<P0>(
21281        &self,
21282        name: P0,
21283        value: *mut windows_core::BOOL,
21284    ) -> windows_core::Result<()>
21285    where
21286        P0: windows_core::Param<windows_core::PCWSTR>,
21287    {
21288        unsafe {
21289            (windows_core::Interface::vtable(self).Contains)(
21290                windows_core::Interface::as_raw(self),
21291                name.param().abi(),
21292                value as _,
21293            )
21294            .ok()
21295        }
21296    }
21297    pub unsafe fn GetHeader<P0>(
21298        &self,
21299        name: P0,
21300        value: *mut windows_core::PWSTR,
21301    ) -> windows_core::Result<()>
21302    where
21303        P0: windows_core::Param<windows_core::PCWSTR>,
21304    {
21305        unsafe {
21306            (windows_core::Interface::vtable(self).GetHeader)(
21307                windows_core::Interface::as_raw(self),
21308                name.param().abi(),
21309                value as _,
21310            )
21311            .ok()
21312        }
21313    }
21314    pub unsafe fn GetHeaders<P0>(
21315        &self,
21316        name: P0,
21317    ) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator>
21318    where
21319        P0: windows_core::Param<windows_core::PCWSTR>,
21320    {
21321        unsafe {
21322            let mut result__ = core::mem::zeroed();
21323            (windows_core::Interface::vtable(self).GetHeaders)(
21324                windows_core::Interface::as_raw(self),
21325                name.param().abi(),
21326                &mut result__,
21327            )
21328            .and_then(|| windows_core::Type::from_abi(result__))
21329        }
21330    }
21331    pub unsafe fn GetIterator(
21332        &self,
21333    ) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator> {
21334        unsafe {
21335            let mut result__ = core::mem::zeroed();
21336            (windows_core::Interface::vtable(self).GetIterator)(
21337                windows_core::Interface::as_raw(self),
21338                &mut result__,
21339            )
21340            .and_then(|| windows_core::Type::from_abi(result__))
21341        }
21342    }
21343}
21344#[repr(C)]
21345#[doc(hidden)]
21346pub struct ICoreWebView2HttpResponseHeaders_Vtbl {
21347    pub base__: windows_core::IUnknown_Vtbl,
21348    pub AppendHeader: unsafe extern "system" fn(
21349        *mut core::ffi::c_void,
21350        windows_core::PCWSTR,
21351        windows_core::PCWSTR,
21352    ) -> windows_core::HRESULT,
21353    pub Contains: unsafe extern "system" fn(
21354        *mut core::ffi::c_void,
21355        windows_core::PCWSTR,
21356        *mut windows_core::BOOL,
21357    ) -> windows_core::HRESULT,
21358    pub GetHeader: unsafe extern "system" fn(
21359        *mut core::ffi::c_void,
21360        windows_core::PCWSTR,
21361        *mut windows_core::PWSTR,
21362    ) -> windows_core::HRESULT,
21363    pub GetHeaders: unsafe extern "system" fn(
21364        *mut core::ffi::c_void,
21365        windows_core::PCWSTR,
21366        *mut *mut core::ffi::c_void,
21367    ) -> windows_core::HRESULT,
21368    pub GetIterator: unsafe extern "system" fn(
21369        *mut core::ffi::c_void,
21370        *mut *mut core::ffi::c_void,
21371    ) -> windows_core::HRESULT,
21372}
21373pub trait ICoreWebView2HttpResponseHeaders_Impl: windows_core::IUnknownImpl {
21374    fn AppendHeader(
21375        &self,
21376        name: &windows_core::PCWSTR,
21377        value: &windows_core::PCWSTR,
21378    ) -> windows_core::Result<()>;
21379    fn Contains(
21380        &self,
21381        name: &windows_core::PCWSTR,
21382        value: *mut windows_core::BOOL,
21383    ) -> windows_core::Result<()>;
21384    fn GetHeader(
21385        &self,
21386        name: &windows_core::PCWSTR,
21387        value: *mut windows_core::PWSTR,
21388    ) -> windows_core::Result<()>;
21389    fn GetHeaders(
21390        &self,
21391        name: &windows_core::PCWSTR,
21392    ) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator>;
21393    fn GetIterator(&self) -> windows_core::Result<ICoreWebView2HttpHeadersCollectionIterator>;
21394}
21395impl ICoreWebView2HttpResponseHeaders_Vtbl {
21396    pub const fn new<Identity: ICoreWebView2HttpResponseHeaders_Impl, const OFFSET: isize>() -> Self
21397    {
21398        unsafe extern "system" fn AppendHeader<
21399            Identity: ICoreWebView2HttpResponseHeaders_Impl,
21400            const OFFSET: isize,
21401        >(
21402            this: *mut core::ffi::c_void,
21403            name: windows_core::PCWSTR,
21404            value: windows_core::PCWSTR,
21405        ) -> windows_core::HRESULT {
21406            unsafe {
21407                let this: &Identity =
21408                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21409                ICoreWebView2HttpResponseHeaders_Impl::AppendHeader(
21410                    this,
21411                    core::mem::transmute(&name),
21412                    core::mem::transmute(&value),
21413                )
21414                .into()
21415            }
21416        }
21417        unsafe extern "system" fn Contains<
21418            Identity: ICoreWebView2HttpResponseHeaders_Impl,
21419            const OFFSET: isize,
21420        >(
21421            this: *mut core::ffi::c_void,
21422            name: windows_core::PCWSTR,
21423            value: *mut windows_core::BOOL,
21424        ) -> windows_core::HRESULT {
21425            unsafe {
21426                let this: &Identity =
21427                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21428                ICoreWebView2HttpResponseHeaders_Impl::Contains(
21429                    this,
21430                    core::mem::transmute(&name),
21431                    core::mem::transmute_copy(&value),
21432                )
21433                .into()
21434            }
21435        }
21436        unsafe extern "system" fn GetHeader<
21437            Identity: ICoreWebView2HttpResponseHeaders_Impl,
21438            const OFFSET: isize,
21439        >(
21440            this: *mut core::ffi::c_void,
21441            name: windows_core::PCWSTR,
21442            value: *mut windows_core::PWSTR,
21443        ) -> windows_core::HRESULT {
21444            unsafe {
21445                let this: &Identity =
21446                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21447                ICoreWebView2HttpResponseHeaders_Impl::GetHeader(
21448                    this,
21449                    core::mem::transmute(&name),
21450                    core::mem::transmute_copy(&value),
21451                )
21452                .into()
21453            }
21454        }
21455        unsafe extern "system" fn GetHeaders<
21456            Identity: ICoreWebView2HttpResponseHeaders_Impl,
21457            const OFFSET: isize,
21458        >(
21459            this: *mut core::ffi::c_void,
21460            name: windows_core::PCWSTR,
21461            value: *mut *mut core::ffi::c_void,
21462        ) -> windows_core::HRESULT {
21463            unsafe {
21464                let this: &Identity =
21465                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21466                match ICoreWebView2HttpResponseHeaders_Impl::GetHeaders(
21467                    this,
21468                    core::mem::transmute(&name),
21469                ) {
21470                    Ok(ok__) => {
21471                        value.write(core::mem::transmute(ok__));
21472                        windows_core::HRESULT(0)
21473                    }
21474                    Err(err) => err.into(),
21475                }
21476            }
21477        }
21478        unsafe extern "system" fn GetIterator<
21479            Identity: ICoreWebView2HttpResponseHeaders_Impl,
21480            const OFFSET: isize,
21481        >(
21482            this: *mut core::ffi::c_void,
21483            value: *mut *mut core::ffi::c_void,
21484        ) -> windows_core::HRESULT {
21485            unsafe {
21486                let this: &Identity =
21487                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21488                match ICoreWebView2HttpResponseHeaders_Impl::GetIterator(this) {
21489                    Ok(ok__) => {
21490                        value.write(core::mem::transmute(ok__));
21491                        windows_core::HRESULT(0)
21492                    }
21493                    Err(err) => err.into(),
21494                }
21495            }
21496        }
21497        Self {
21498            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21499            AppendHeader: AppendHeader::<Identity, OFFSET>,
21500            Contains: Contains::<Identity, OFFSET>,
21501            GetHeader: GetHeader::<Identity, OFFSET>,
21502            GetHeaders: GetHeaders::<Identity, OFFSET>,
21503            GetIterator: GetIterator::<Identity, OFFSET>,
21504        }
21505    }
21506    pub fn matches(iid: &windows_core::GUID) -> bool {
21507        iid == &<ICoreWebView2HttpResponseHeaders as windows_core::Interface>::IID
21508    }
21509}
21510impl windows_core::RuntimeName for ICoreWebView2HttpResponseHeaders {}
21511windows_core::imp::define_interface!(
21512    ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler,
21513    ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Vtbl,
21514    0x3117da26_ae13_438d_bd46_edbeb2c4ce81
21515);
21516windows_core::imp::interface_hierarchy!(
21517    ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler,
21518    windows_core::IUnknown
21519);
21520impl ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler {
21521    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
21522    where
21523        P0: windows_core::Param<ICoreWebView2>,
21524        P1: windows_core::Param<windows_core::IUnknown>,
21525    {
21526        unsafe {
21527            (windows_core::Interface::vtable(self).Invoke)(
21528                windows_core::Interface::as_raw(self),
21529                sender.param().abi(),
21530                args.param().abi(),
21531            )
21532            .ok()
21533        }
21534    }
21535}
21536#[repr(C)]
21537#[doc(hidden)]
21538pub struct ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Vtbl {
21539    pub base__: windows_core::IUnknown_Vtbl,
21540    pub Invoke: unsafe extern "system" fn(
21541        *mut core::ffi::c_void,
21542        *mut core::ffi::c_void,
21543        *mut core::ffi::c_void,
21544    ) -> windows_core::HRESULT,
21545}
21546pub trait ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Impl:
21547    windows_core::IUnknownImpl
21548{
21549    fn Invoke(
21550        &self,
21551        sender: windows_core::Ref<'_, ICoreWebView2>,
21552        args: windows_core::Ref<'_, windows_core::IUnknown>,
21553    ) -> windows_core::Result<()>;
21554}
21555impl ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Vtbl {
21556    pub const fn new<
21557        Identity: ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Impl,
21558        const OFFSET: isize,
21559    >() -> Self {
21560        unsafe extern "system" fn Invoke<
21561            Identity: ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Impl,
21562            const OFFSET: isize,
21563        >(
21564            this: *mut core::ffi::c_void,
21565            sender: *mut core::ffi::c_void,
21566            args: *mut core::ffi::c_void,
21567        ) -> windows_core::HRESULT {
21568            unsafe {
21569                let this: &Identity =
21570                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21571                ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Impl::Invoke(
21572                    this,
21573                    core::mem::transmute_copy(&sender),
21574                    core::mem::transmute_copy(&args),
21575                )
21576                .into()
21577            }
21578        }
21579        Self {
21580            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21581            Invoke: Invoke::<Identity, OFFSET>,
21582        }
21583    }
21584    pub fn matches(iid: &windows_core::GUID) -> bool {
21585        iid == & < ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler as windows_core::Interface >::IID
21586    }
21587}
21588impl windows_core::RuntimeName for ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler {}
21589windows_core::imp::define_interface!(
21590    ICoreWebView2IsDocumentPlayingAudioChangedEventHandler,
21591    ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Vtbl,
21592    0x5def109a_2f4b_49fa_b7f6_11c39e513328
21593);
21594windows_core::imp::interface_hierarchy!(
21595    ICoreWebView2IsDocumentPlayingAudioChangedEventHandler,
21596    windows_core::IUnknown
21597);
21598impl ICoreWebView2IsDocumentPlayingAudioChangedEventHandler {
21599    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
21600    where
21601        P0: windows_core::Param<ICoreWebView2>,
21602        P1: windows_core::Param<windows_core::IUnknown>,
21603    {
21604        unsafe {
21605            (windows_core::Interface::vtable(self).Invoke)(
21606                windows_core::Interface::as_raw(self),
21607                sender.param().abi(),
21608                args.param().abi(),
21609            )
21610            .ok()
21611        }
21612    }
21613}
21614#[repr(C)]
21615#[doc(hidden)]
21616pub struct ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Vtbl {
21617    pub base__: windows_core::IUnknown_Vtbl,
21618    pub Invoke: unsafe extern "system" fn(
21619        *mut core::ffi::c_void,
21620        *mut core::ffi::c_void,
21621        *mut core::ffi::c_void,
21622    ) -> windows_core::HRESULT,
21623}
21624pub trait ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Impl:
21625    windows_core::IUnknownImpl
21626{
21627    fn Invoke(
21628        &self,
21629        sender: windows_core::Ref<'_, ICoreWebView2>,
21630        args: windows_core::Ref<'_, windows_core::IUnknown>,
21631    ) -> windows_core::Result<()>;
21632}
21633impl ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Vtbl {
21634    pub const fn new<
21635        Identity: ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Impl,
21636        const OFFSET: isize,
21637    >() -> Self {
21638        unsafe extern "system" fn Invoke<
21639            Identity: ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Impl,
21640            const OFFSET: isize,
21641        >(
21642            this: *mut core::ffi::c_void,
21643            sender: *mut core::ffi::c_void,
21644            args: *mut core::ffi::c_void,
21645        ) -> windows_core::HRESULT {
21646            unsafe {
21647                let this: &Identity =
21648                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21649                ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Impl::Invoke(
21650                    this,
21651                    core::mem::transmute_copy(&sender),
21652                    core::mem::transmute_copy(&args),
21653                )
21654                .into()
21655            }
21656        }
21657        Self {
21658            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21659            Invoke: Invoke::<Identity, OFFSET>,
21660        }
21661    }
21662    pub fn matches(iid: &windows_core::GUID) -> bool {
21663        iid == & < ICoreWebView2IsDocumentPlayingAudioChangedEventHandler as windows_core::Interface >::IID
21664    }
21665}
21666impl windows_core::RuntimeName for ICoreWebView2IsDocumentPlayingAudioChangedEventHandler {}
21667windows_core::imp::define_interface!(
21668    ICoreWebView2IsMutedChangedEventHandler,
21669    ICoreWebView2IsMutedChangedEventHandler_Vtbl,
21670    0x57d90347_cd0e_4952_a4a2_7483a2756f08
21671);
21672windows_core::imp::interface_hierarchy!(
21673    ICoreWebView2IsMutedChangedEventHandler,
21674    windows_core::IUnknown
21675);
21676impl ICoreWebView2IsMutedChangedEventHandler {
21677    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
21678    where
21679        P0: windows_core::Param<ICoreWebView2>,
21680        P1: windows_core::Param<windows_core::IUnknown>,
21681    {
21682        unsafe {
21683            (windows_core::Interface::vtable(self).Invoke)(
21684                windows_core::Interface::as_raw(self),
21685                sender.param().abi(),
21686                args.param().abi(),
21687            )
21688            .ok()
21689        }
21690    }
21691}
21692#[repr(C)]
21693#[doc(hidden)]
21694pub struct ICoreWebView2IsMutedChangedEventHandler_Vtbl {
21695    pub base__: windows_core::IUnknown_Vtbl,
21696    pub Invoke: unsafe extern "system" fn(
21697        *mut core::ffi::c_void,
21698        *mut core::ffi::c_void,
21699        *mut core::ffi::c_void,
21700    ) -> windows_core::HRESULT,
21701}
21702pub trait ICoreWebView2IsMutedChangedEventHandler_Impl: windows_core::IUnknownImpl {
21703    fn Invoke(
21704        &self,
21705        sender: windows_core::Ref<'_, ICoreWebView2>,
21706        args: windows_core::Ref<'_, windows_core::IUnknown>,
21707    ) -> windows_core::Result<()>;
21708}
21709impl ICoreWebView2IsMutedChangedEventHandler_Vtbl {
21710    pub const fn new<
21711        Identity: ICoreWebView2IsMutedChangedEventHandler_Impl,
21712        const OFFSET: isize,
21713    >() -> Self {
21714        unsafe extern "system" fn Invoke<
21715            Identity: ICoreWebView2IsMutedChangedEventHandler_Impl,
21716            const OFFSET: isize,
21717        >(
21718            this: *mut core::ffi::c_void,
21719            sender: *mut core::ffi::c_void,
21720            args: *mut core::ffi::c_void,
21721        ) -> windows_core::HRESULT {
21722            unsafe {
21723                let this: &Identity =
21724                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21725                ICoreWebView2IsMutedChangedEventHandler_Impl::Invoke(
21726                    this,
21727                    core::mem::transmute_copy(&sender),
21728                    core::mem::transmute_copy(&args),
21729                )
21730                .into()
21731            }
21732        }
21733        Self {
21734            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21735            Invoke: Invoke::<Identity, OFFSET>,
21736        }
21737    }
21738    pub fn matches(iid: &windows_core::GUID) -> bool {
21739        iid == &<ICoreWebView2IsMutedChangedEventHandler as windows_core::Interface>::IID
21740    }
21741}
21742impl windows_core::RuntimeName for ICoreWebView2IsMutedChangedEventHandler {}
21743windows_core::imp::define_interface!(
21744    ICoreWebView2LaunchingExternalUriSchemeEventArgs,
21745    ICoreWebView2LaunchingExternalUriSchemeEventArgs_Vtbl,
21746    0x07d1a6c3_7175_4ba1_9306_e593ca07e46c
21747);
21748windows_core::imp::interface_hierarchy!(
21749    ICoreWebView2LaunchingExternalUriSchemeEventArgs,
21750    windows_core::IUnknown
21751);
21752impl ICoreWebView2LaunchingExternalUriSchemeEventArgs {
21753    pub unsafe fn Uri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
21754        unsafe {
21755            (windows_core::Interface::vtable(self).Uri)(
21756                windows_core::Interface::as_raw(self),
21757                value as _,
21758            )
21759            .ok()
21760        }
21761    }
21762    pub unsafe fn InitiatingOrigin(
21763        &self,
21764        value: *mut windows_core::PWSTR,
21765    ) -> windows_core::Result<()> {
21766        unsafe {
21767            (windows_core::Interface::vtable(self).InitiatingOrigin)(
21768                windows_core::Interface::as_raw(self),
21769                value as _,
21770            )
21771            .ok()
21772        }
21773    }
21774    pub unsafe fn IsUserInitiated(
21775        &self,
21776        value: *mut windows_core::BOOL,
21777    ) -> windows_core::Result<()> {
21778        unsafe {
21779            (windows_core::Interface::vtable(self).IsUserInitiated)(
21780                windows_core::Interface::as_raw(self),
21781                value as _,
21782            )
21783            .ok()
21784        }
21785    }
21786    pub unsafe fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
21787        unsafe {
21788            (windows_core::Interface::vtable(self).Cancel)(
21789                windows_core::Interface::as_raw(self),
21790                value as _,
21791            )
21792            .ok()
21793        }
21794    }
21795    pub unsafe fn SetCancel(&self, value: bool) -> windows_core::Result<()> {
21796        unsafe {
21797            (windows_core::Interface::vtable(self).SetCancel)(
21798                windows_core::Interface::as_raw(self),
21799                value.into(),
21800            )
21801            .ok()
21802        }
21803    }
21804    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
21805        unsafe {
21806            let mut result__ = core::mem::zeroed();
21807            (windows_core::Interface::vtable(self).GetDeferral)(
21808                windows_core::Interface::as_raw(self),
21809                &mut result__,
21810            )
21811            .and_then(|| windows_core::Type::from_abi(result__))
21812        }
21813    }
21814}
21815#[repr(C)]
21816#[doc(hidden)]
21817pub struct ICoreWebView2LaunchingExternalUriSchemeEventArgs_Vtbl {
21818    pub base__: windows_core::IUnknown_Vtbl,
21819    pub Uri: unsafe extern "system" fn(
21820        *mut core::ffi::c_void,
21821        *mut windows_core::PWSTR,
21822    ) -> windows_core::HRESULT,
21823    pub InitiatingOrigin: unsafe extern "system" fn(
21824        *mut core::ffi::c_void,
21825        *mut windows_core::PWSTR,
21826    ) -> windows_core::HRESULT,
21827    pub IsUserInitiated: unsafe extern "system" fn(
21828        *mut core::ffi::c_void,
21829        *mut windows_core::BOOL,
21830    ) -> windows_core::HRESULT,
21831    pub Cancel: unsafe extern "system" fn(
21832        *mut core::ffi::c_void,
21833        *mut windows_core::BOOL,
21834    ) -> windows_core::HRESULT,
21835    pub SetCancel: unsafe extern "system" fn(
21836        *mut core::ffi::c_void,
21837        windows_core::BOOL,
21838    ) -> windows_core::HRESULT,
21839    pub GetDeferral: unsafe extern "system" fn(
21840        *mut core::ffi::c_void,
21841        *mut *mut core::ffi::c_void,
21842    ) -> windows_core::HRESULT,
21843}
21844pub trait ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl:
21845    windows_core::IUnknownImpl
21846{
21847    fn Uri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
21848    fn InitiatingOrigin(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
21849    fn IsUserInitiated(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
21850    fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
21851    fn SetCancel(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
21852    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
21853}
21854impl ICoreWebView2LaunchingExternalUriSchemeEventArgs_Vtbl {
21855    pub const fn new<
21856        Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21857        const OFFSET: isize,
21858    >() -> Self {
21859        unsafe extern "system" fn Uri<
21860            Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21861            const OFFSET: isize,
21862        >(
21863            this: *mut core::ffi::c_void,
21864            value: *mut windows_core::PWSTR,
21865        ) -> windows_core::HRESULT {
21866            unsafe {
21867                let this: &Identity =
21868                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21869                ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl::Uri(
21870                    this,
21871                    core::mem::transmute_copy(&value),
21872                )
21873                .into()
21874            }
21875        }
21876        unsafe extern "system" fn InitiatingOrigin<
21877            Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21878            const OFFSET: isize,
21879        >(
21880            this: *mut core::ffi::c_void,
21881            value: *mut windows_core::PWSTR,
21882        ) -> windows_core::HRESULT {
21883            unsafe {
21884                let this: &Identity =
21885                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21886                ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl::InitiatingOrigin(
21887                    this,
21888                    core::mem::transmute_copy(&value),
21889                )
21890                .into()
21891            }
21892        }
21893        unsafe extern "system" fn IsUserInitiated<
21894            Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21895            const OFFSET: isize,
21896        >(
21897            this: *mut core::ffi::c_void,
21898            value: *mut windows_core::BOOL,
21899        ) -> windows_core::HRESULT {
21900            unsafe {
21901                let this: &Identity =
21902                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21903                ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl::IsUserInitiated(
21904                    this,
21905                    core::mem::transmute_copy(&value),
21906                )
21907                .into()
21908            }
21909        }
21910        unsafe extern "system" fn Cancel<
21911            Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21912            const OFFSET: isize,
21913        >(
21914            this: *mut core::ffi::c_void,
21915            value: *mut windows_core::BOOL,
21916        ) -> windows_core::HRESULT {
21917            unsafe {
21918                let this: &Identity =
21919                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21920                ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl::Cancel(
21921                    this,
21922                    core::mem::transmute_copy(&value),
21923                )
21924                .into()
21925            }
21926        }
21927        unsafe extern "system" fn SetCancel<
21928            Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21929            const OFFSET: isize,
21930        >(
21931            this: *mut core::ffi::c_void,
21932            value: windows_core::BOOL,
21933        ) -> windows_core::HRESULT {
21934            unsafe {
21935                let this: &Identity =
21936                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21937                ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl::SetCancel(
21938                    this,
21939                    core::mem::transmute_copy(&value),
21940                )
21941                .into()
21942            }
21943        }
21944        unsafe extern "system" fn GetDeferral<
21945            Identity: ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl,
21946            const OFFSET: isize,
21947        >(
21948            this: *mut core::ffi::c_void,
21949            value: *mut *mut core::ffi::c_void,
21950        ) -> windows_core::HRESULT {
21951            unsafe {
21952                let this: &Identity =
21953                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21954                match ICoreWebView2LaunchingExternalUriSchemeEventArgs_Impl::GetDeferral(this) {
21955                    Ok(ok__) => {
21956                        value.write(core::mem::transmute(ok__));
21957                        windows_core::HRESULT(0)
21958                    }
21959                    Err(err) => err.into(),
21960                }
21961            }
21962        }
21963        Self {
21964            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21965            Uri: Uri::<Identity, OFFSET>,
21966            InitiatingOrigin: InitiatingOrigin::<Identity, OFFSET>,
21967            IsUserInitiated: IsUserInitiated::<Identity, OFFSET>,
21968            Cancel: Cancel::<Identity, OFFSET>,
21969            SetCancel: SetCancel::<Identity, OFFSET>,
21970            GetDeferral: GetDeferral::<Identity, OFFSET>,
21971        }
21972    }
21973    pub fn matches(iid: &windows_core::GUID) -> bool {
21974        iid == &<ICoreWebView2LaunchingExternalUriSchemeEventArgs as windows_core::Interface>::IID
21975    }
21976}
21977impl windows_core::RuntimeName for ICoreWebView2LaunchingExternalUriSchemeEventArgs {}
21978windows_core::imp::define_interface!(
21979    ICoreWebView2LaunchingExternalUriSchemeEventHandler,
21980    ICoreWebView2LaunchingExternalUriSchemeEventHandler_Vtbl,
21981    0x74f712e0_8165_43a9_a13f_0cce597e75df
21982);
21983windows_core::imp::interface_hierarchy!(
21984    ICoreWebView2LaunchingExternalUriSchemeEventHandler,
21985    windows_core::IUnknown
21986);
21987impl ICoreWebView2LaunchingExternalUriSchemeEventHandler {
21988    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
21989    where
21990        P0: windows_core::Param<ICoreWebView2>,
21991        P1: windows_core::Param<ICoreWebView2LaunchingExternalUriSchemeEventArgs>,
21992    {
21993        unsafe {
21994            (windows_core::Interface::vtable(self).Invoke)(
21995                windows_core::Interface::as_raw(self),
21996                sender.param().abi(),
21997                args.param().abi(),
21998            )
21999            .ok()
22000        }
22001    }
22002}
22003#[repr(C)]
22004#[doc(hidden)]
22005pub struct ICoreWebView2LaunchingExternalUriSchemeEventHandler_Vtbl {
22006    pub base__: windows_core::IUnknown_Vtbl,
22007    pub Invoke: unsafe extern "system" fn(
22008        *mut core::ffi::c_void,
22009        *mut core::ffi::c_void,
22010        *mut core::ffi::c_void,
22011    ) -> windows_core::HRESULT,
22012}
22013pub trait ICoreWebView2LaunchingExternalUriSchemeEventHandler_Impl:
22014    windows_core::IUnknownImpl
22015{
22016    fn Invoke(
22017        &self,
22018        sender: windows_core::Ref<'_, ICoreWebView2>,
22019        args: windows_core::Ref<'_, ICoreWebView2LaunchingExternalUriSchemeEventArgs>,
22020    ) -> windows_core::Result<()>;
22021}
22022impl ICoreWebView2LaunchingExternalUriSchemeEventHandler_Vtbl {
22023    pub const fn new<
22024        Identity: ICoreWebView2LaunchingExternalUriSchemeEventHandler_Impl,
22025        const OFFSET: isize,
22026    >() -> Self {
22027        unsafe extern "system" fn Invoke<
22028            Identity: ICoreWebView2LaunchingExternalUriSchemeEventHandler_Impl,
22029            const OFFSET: isize,
22030        >(
22031            this: *mut core::ffi::c_void,
22032            sender: *mut core::ffi::c_void,
22033            args: *mut core::ffi::c_void,
22034        ) -> windows_core::HRESULT {
22035            unsafe {
22036                let this: &Identity =
22037                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22038                ICoreWebView2LaunchingExternalUriSchemeEventHandler_Impl::Invoke(
22039                    this,
22040                    core::mem::transmute_copy(&sender),
22041                    core::mem::transmute_copy(&args),
22042                )
22043                .into()
22044            }
22045        }
22046        Self {
22047            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22048            Invoke: Invoke::<Identity, OFFSET>,
22049        }
22050    }
22051    pub fn matches(iid: &windows_core::GUID) -> bool {
22052        iid == & < ICoreWebView2LaunchingExternalUriSchemeEventHandler as windows_core::Interface >::IID
22053    }
22054}
22055impl windows_core::RuntimeName for ICoreWebView2LaunchingExternalUriSchemeEventHandler {}
22056windows_core::imp::define_interface!(
22057    ICoreWebView2MoveFocusRequestedEventArgs,
22058    ICoreWebView2MoveFocusRequestedEventArgs_Vtbl,
22059    0x2d6aa13b_3839_4a15_92fc_d88b3c0d9c9d
22060);
22061windows_core::imp::interface_hierarchy!(
22062    ICoreWebView2MoveFocusRequestedEventArgs,
22063    windows_core::IUnknown
22064);
22065impl ICoreWebView2MoveFocusRequestedEventArgs {
22066    pub unsafe fn Reason(
22067        &self,
22068        reason: *mut COREWEBVIEW2_MOVE_FOCUS_REASON,
22069    ) -> windows_core::Result<()> {
22070        unsafe {
22071            (windows_core::Interface::vtable(self).Reason)(
22072                windows_core::Interface::as_raw(self),
22073                reason as _,
22074            )
22075            .ok()
22076        }
22077    }
22078    pub unsafe fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
22079        unsafe {
22080            (windows_core::Interface::vtable(self).Handled)(
22081                windows_core::Interface::as_raw(self),
22082                value as _,
22083            )
22084            .ok()
22085        }
22086    }
22087    pub unsafe fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
22088        unsafe {
22089            (windows_core::Interface::vtable(self).SetHandled)(
22090                windows_core::Interface::as_raw(self),
22091                value.into(),
22092            )
22093            .ok()
22094        }
22095    }
22096}
22097#[repr(C)]
22098#[doc(hidden)]
22099pub struct ICoreWebView2MoveFocusRequestedEventArgs_Vtbl {
22100    pub base__: windows_core::IUnknown_Vtbl,
22101    pub Reason: unsafe extern "system" fn(
22102        *mut core::ffi::c_void,
22103        *mut COREWEBVIEW2_MOVE_FOCUS_REASON,
22104    ) -> windows_core::HRESULT,
22105    pub Handled: unsafe extern "system" fn(
22106        *mut core::ffi::c_void,
22107        *mut windows_core::BOOL,
22108    ) -> windows_core::HRESULT,
22109    pub SetHandled: unsafe extern "system" fn(
22110        *mut core::ffi::c_void,
22111        windows_core::BOOL,
22112    ) -> windows_core::HRESULT,
22113}
22114pub trait ICoreWebView2MoveFocusRequestedEventArgs_Impl: windows_core::IUnknownImpl {
22115    fn Reason(&self, reason: *mut COREWEBVIEW2_MOVE_FOCUS_REASON) -> windows_core::Result<()>;
22116    fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
22117    fn SetHandled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
22118}
22119impl ICoreWebView2MoveFocusRequestedEventArgs_Vtbl {
22120    pub const fn new<
22121        Identity: ICoreWebView2MoveFocusRequestedEventArgs_Impl,
22122        const OFFSET: isize,
22123    >() -> Self {
22124        unsafe extern "system" fn Reason<
22125            Identity: ICoreWebView2MoveFocusRequestedEventArgs_Impl,
22126            const OFFSET: isize,
22127        >(
22128            this: *mut core::ffi::c_void,
22129            reason: *mut COREWEBVIEW2_MOVE_FOCUS_REASON,
22130        ) -> windows_core::HRESULT {
22131            unsafe {
22132                let this: &Identity =
22133                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22134                ICoreWebView2MoveFocusRequestedEventArgs_Impl::Reason(
22135                    this,
22136                    core::mem::transmute_copy(&reason),
22137                )
22138                .into()
22139            }
22140        }
22141        unsafe extern "system" fn Handled<
22142            Identity: ICoreWebView2MoveFocusRequestedEventArgs_Impl,
22143            const OFFSET: isize,
22144        >(
22145            this: *mut core::ffi::c_void,
22146            value: *mut windows_core::BOOL,
22147        ) -> windows_core::HRESULT {
22148            unsafe {
22149                let this: &Identity =
22150                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22151                ICoreWebView2MoveFocusRequestedEventArgs_Impl::Handled(
22152                    this,
22153                    core::mem::transmute_copy(&value),
22154                )
22155                .into()
22156            }
22157        }
22158        unsafe extern "system" fn SetHandled<
22159            Identity: ICoreWebView2MoveFocusRequestedEventArgs_Impl,
22160            const OFFSET: isize,
22161        >(
22162            this: *mut core::ffi::c_void,
22163            value: windows_core::BOOL,
22164        ) -> windows_core::HRESULT {
22165            unsafe {
22166                let this: &Identity =
22167                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22168                ICoreWebView2MoveFocusRequestedEventArgs_Impl::SetHandled(
22169                    this,
22170                    core::mem::transmute_copy(&value),
22171                )
22172                .into()
22173            }
22174        }
22175        Self {
22176            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22177            Reason: Reason::<Identity, OFFSET>,
22178            Handled: Handled::<Identity, OFFSET>,
22179            SetHandled: SetHandled::<Identity, OFFSET>,
22180        }
22181    }
22182    pub fn matches(iid: &windows_core::GUID) -> bool {
22183        iid == &<ICoreWebView2MoveFocusRequestedEventArgs as windows_core::Interface>::IID
22184    }
22185}
22186impl windows_core::RuntimeName for ICoreWebView2MoveFocusRequestedEventArgs {}
22187windows_core::imp::define_interface!(
22188    ICoreWebView2MoveFocusRequestedEventHandler,
22189    ICoreWebView2MoveFocusRequestedEventHandler_Vtbl,
22190    0x69035451_6dc7_4cb8_9bce_b2bd70ad289f
22191);
22192windows_core::imp::interface_hierarchy!(
22193    ICoreWebView2MoveFocusRequestedEventHandler,
22194    windows_core::IUnknown
22195);
22196impl ICoreWebView2MoveFocusRequestedEventHandler {
22197    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
22198    where
22199        P0: windows_core::Param<ICoreWebView2Controller>,
22200        P1: windows_core::Param<ICoreWebView2MoveFocusRequestedEventArgs>,
22201    {
22202        unsafe {
22203            (windows_core::Interface::vtable(self).Invoke)(
22204                windows_core::Interface::as_raw(self),
22205                sender.param().abi(),
22206                args.param().abi(),
22207            )
22208            .ok()
22209        }
22210    }
22211}
22212#[repr(C)]
22213#[doc(hidden)]
22214pub struct ICoreWebView2MoveFocusRequestedEventHandler_Vtbl {
22215    pub base__: windows_core::IUnknown_Vtbl,
22216    pub Invoke: unsafe extern "system" fn(
22217        *mut core::ffi::c_void,
22218        *mut core::ffi::c_void,
22219        *mut core::ffi::c_void,
22220    ) -> windows_core::HRESULT,
22221}
22222pub trait ICoreWebView2MoveFocusRequestedEventHandler_Impl: windows_core::IUnknownImpl {
22223    fn Invoke(
22224        &self,
22225        sender: windows_core::Ref<'_, ICoreWebView2Controller>,
22226        args: windows_core::Ref<'_, ICoreWebView2MoveFocusRequestedEventArgs>,
22227    ) -> windows_core::Result<()>;
22228}
22229impl ICoreWebView2MoveFocusRequestedEventHandler_Vtbl {
22230    pub const fn new<
22231        Identity: ICoreWebView2MoveFocusRequestedEventHandler_Impl,
22232        const OFFSET: isize,
22233    >() -> Self {
22234        unsafe extern "system" fn Invoke<
22235            Identity: ICoreWebView2MoveFocusRequestedEventHandler_Impl,
22236            const OFFSET: isize,
22237        >(
22238            this: *mut core::ffi::c_void,
22239            sender: *mut core::ffi::c_void,
22240            args: *mut core::ffi::c_void,
22241        ) -> windows_core::HRESULT {
22242            unsafe {
22243                let this: &Identity =
22244                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22245                ICoreWebView2MoveFocusRequestedEventHandler_Impl::Invoke(
22246                    this,
22247                    core::mem::transmute_copy(&sender),
22248                    core::mem::transmute_copy(&args),
22249                )
22250                .into()
22251            }
22252        }
22253        Self {
22254            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22255            Invoke: Invoke::<Identity, OFFSET>,
22256        }
22257    }
22258    pub fn matches(iid: &windows_core::GUID) -> bool {
22259        iid == &<ICoreWebView2MoveFocusRequestedEventHandler as windows_core::Interface>::IID
22260    }
22261}
22262impl windows_core::RuntimeName for ICoreWebView2MoveFocusRequestedEventHandler {}
22263windows_core::imp::define_interface!(
22264    ICoreWebView2NavigationCompletedEventArgs,
22265    ICoreWebView2NavigationCompletedEventArgs_Vtbl,
22266    0x30d68b7d_20d9_4752_a9ca_ec8448fbb5c1
22267);
22268windows_core::imp::interface_hierarchy!(
22269    ICoreWebView2NavigationCompletedEventArgs,
22270    windows_core::IUnknown
22271);
22272impl ICoreWebView2NavigationCompletedEventArgs {
22273    pub unsafe fn IsSuccess(&self, issuccess: *mut windows_core::BOOL) -> windows_core::Result<()> {
22274        unsafe {
22275            (windows_core::Interface::vtable(self).IsSuccess)(
22276                windows_core::Interface::as_raw(self),
22277                issuccess as _,
22278            )
22279            .ok()
22280        }
22281    }
22282    pub unsafe fn WebErrorStatus(
22283        &self,
22284        weberrorstatus: *mut COREWEBVIEW2_WEB_ERROR_STATUS,
22285    ) -> windows_core::Result<()> {
22286        unsafe {
22287            (windows_core::Interface::vtable(self).WebErrorStatus)(
22288                windows_core::Interface::as_raw(self),
22289                weberrorstatus as _,
22290            )
22291            .ok()
22292        }
22293    }
22294    pub unsafe fn NavigationId(&self, navigationid: *mut u64) -> windows_core::Result<()> {
22295        unsafe {
22296            (windows_core::Interface::vtable(self).NavigationId)(
22297                windows_core::Interface::as_raw(self),
22298                navigationid as _,
22299            )
22300            .ok()
22301        }
22302    }
22303}
22304#[repr(C)]
22305#[doc(hidden)]
22306pub struct ICoreWebView2NavigationCompletedEventArgs_Vtbl {
22307    pub base__: windows_core::IUnknown_Vtbl,
22308    pub IsSuccess: unsafe extern "system" fn(
22309        *mut core::ffi::c_void,
22310        *mut windows_core::BOOL,
22311    ) -> windows_core::HRESULT,
22312    pub WebErrorStatus: unsafe extern "system" fn(
22313        *mut core::ffi::c_void,
22314        *mut COREWEBVIEW2_WEB_ERROR_STATUS,
22315    ) -> windows_core::HRESULT,
22316    pub NavigationId:
22317        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
22318}
22319pub trait ICoreWebView2NavigationCompletedEventArgs_Impl: windows_core::IUnknownImpl {
22320    fn IsSuccess(&self, issuccess: *mut windows_core::BOOL) -> windows_core::Result<()>;
22321    fn WebErrorStatus(
22322        &self,
22323        weberrorstatus: *mut COREWEBVIEW2_WEB_ERROR_STATUS,
22324    ) -> windows_core::Result<()>;
22325    fn NavigationId(&self, navigationid: *mut u64) -> windows_core::Result<()>;
22326}
22327impl ICoreWebView2NavigationCompletedEventArgs_Vtbl {
22328    pub const fn new<
22329        Identity: ICoreWebView2NavigationCompletedEventArgs_Impl,
22330        const OFFSET: isize,
22331    >() -> Self {
22332        unsafe extern "system" fn IsSuccess<
22333            Identity: ICoreWebView2NavigationCompletedEventArgs_Impl,
22334            const OFFSET: isize,
22335        >(
22336            this: *mut core::ffi::c_void,
22337            issuccess: *mut windows_core::BOOL,
22338        ) -> windows_core::HRESULT {
22339            unsafe {
22340                let this: &Identity =
22341                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22342                ICoreWebView2NavigationCompletedEventArgs_Impl::IsSuccess(
22343                    this,
22344                    core::mem::transmute_copy(&issuccess),
22345                )
22346                .into()
22347            }
22348        }
22349        unsafe extern "system" fn WebErrorStatus<
22350            Identity: ICoreWebView2NavigationCompletedEventArgs_Impl,
22351            const OFFSET: isize,
22352        >(
22353            this: *mut core::ffi::c_void,
22354            weberrorstatus: *mut COREWEBVIEW2_WEB_ERROR_STATUS,
22355        ) -> windows_core::HRESULT {
22356            unsafe {
22357                let this: &Identity =
22358                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22359                ICoreWebView2NavigationCompletedEventArgs_Impl::WebErrorStatus(
22360                    this,
22361                    core::mem::transmute_copy(&weberrorstatus),
22362                )
22363                .into()
22364            }
22365        }
22366        unsafe extern "system" fn NavigationId<
22367            Identity: ICoreWebView2NavigationCompletedEventArgs_Impl,
22368            const OFFSET: isize,
22369        >(
22370            this: *mut core::ffi::c_void,
22371            navigationid: *mut u64,
22372        ) -> windows_core::HRESULT {
22373            unsafe {
22374                let this: &Identity =
22375                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22376                ICoreWebView2NavigationCompletedEventArgs_Impl::NavigationId(
22377                    this,
22378                    core::mem::transmute_copy(&navigationid),
22379                )
22380                .into()
22381            }
22382        }
22383        Self {
22384            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22385            IsSuccess: IsSuccess::<Identity, OFFSET>,
22386            WebErrorStatus: WebErrorStatus::<Identity, OFFSET>,
22387            NavigationId: NavigationId::<Identity, OFFSET>,
22388        }
22389    }
22390    pub fn matches(iid: &windows_core::GUID) -> bool {
22391        iid == &<ICoreWebView2NavigationCompletedEventArgs as windows_core::Interface>::IID
22392    }
22393}
22394impl windows_core::RuntimeName for ICoreWebView2NavigationCompletedEventArgs {}
22395windows_core::imp::define_interface!(
22396    ICoreWebView2NavigationCompletedEventArgs2,
22397    ICoreWebView2NavigationCompletedEventArgs2_Vtbl,
22398    0xfdf8b738_ee1e_4db2_a329_8d7d7b74d792
22399);
22400impl core::ops::Deref for ICoreWebView2NavigationCompletedEventArgs2 {
22401    type Target = ICoreWebView2NavigationCompletedEventArgs;
22402    fn deref(&self) -> &Self::Target {
22403        unsafe { core::mem::transmute(self) }
22404    }
22405}
22406windows_core::imp::interface_hierarchy!(
22407    ICoreWebView2NavigationCompletedEventArgs2,
22408    windows_core::IUnknown,
22409    ICoreWebView2NavigationCompletedEventArgs
22410);
22411impl ICoreWebView2NavigationCompletedEventArgs2 {
22412    pub unsafe fn HttpStatusCode(&self, value: *mut i32) -> windows_core::Result<()> {
22413        unsafe {
22414            (windows_core::Interface::vtable(self).HttpStatusCode)(
22415                windows_core::Interface::as_raw(self),
22416                value as _,
22417            )
22418            .ok()
22419        }
22420    }
22421}
22422#[repr(C)]
22423#[doc(hidden)]
22424pub struct ICoreWebView2NavigationCompletedEventArgs2_Vtbl {
22425    pub base__: ICoreWebView2NavigationCompletedEventArgs_Vtbl,
22426    pub HttpStatusCode:
22427        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
22428}
22429pub trait ICoreWebView2NavigationCompletedEventArgs2_Impl:
22430    ICoreWebView2NavigationCompletedEventArgs_Impl
22431{
22432    fn HttpStatusCode(&self, value: *mut i32) -> windows_core::Result<()>;
22433}
22434impl ICoreWebView2NavigationCompletedEventArgs2_Vtbl {
22435    pub const fn new<
22436        Identity: ICoreWebView2NavigationCompletedEventArgs2_Impl,
22437        const OFFSET: isize,
22438    >() -> Self {
22439        unsafe extern "system" fn HttpStatusCode<
22440            Identity: ICoreWebView2NavigationCompletedEventArgs2_Impl,
22441            const OFFSET: isize,
22442        >(
22443            this: *mut core::ffi::c_void,
22444            value: *mut i32,
22445        ) -> windows_core::HRESULT {
22446            unsafe {
22447                let this: &Identity =
22448                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22449                ICoreWebView2NavigationCompletedEventArgs2_Impl::HttpStatusCode(
22450                    this,
22451                    core::mem::transmute_copy(&value),
22452                )
22453                .into()
22454            }
22455        }
22456        Self {
22457            base__: ICoreWebView2NavigationCompletedEventArgs_Vtbl::new::<Identity, OFFSET>(),
22458            HttpStatusCode: HttpStatusCode::<Identity, OFFSET>,
22459        }
22460    }
22461    pub fn matches(iid: &windows_core::GUID) -> bool {
22462        iid == &<ICoreWebView2NavigationCompletedEventArgs2 as windows_core::Interface>::IID
22463            || iid == &<ICoreWebView2NavigationCompletedEventArgs as windows_core::Interface>::IID
22464    }
22465}
22466impl windows_core::RuntimeName for ICoreWebView2NavigationCompletedEventArgs2 {}
22467windows_core::imp::define_interface!(
22468    ICoreWebView2NavigationCompletedEventHandler,
22469    ICoreWebView2NavigationCompletedEventHandler_Vtbl,
22470    0xd33a35bf_1c49_4f98_93ab_006e0533fe1c
22471);
22472windows_core::imp::interface_hierarchy!(
22473    ICoreWebView2NavigationCompletedEventHandler,
22474    windows_core::IUnknown
22475);
22476impl ICoreWebView2NavigationCompletedEventHandler {
22477    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
22478    where
22479        P0: windows_core::Param<ICoreWebView2>,
22480        P1: windows_core::Param<ICoreWebView2NavigationCompletedEventArgs>,
22481    {
22482        unsafe {
22483            (windows_core::Interface::vtable(self).Invoke)(
22484                windows_core::Interface::as_raw(self),
22485                sender.param().abi(),
22486                args.param().abi(),
22487            )
22488            .ok()
22489        }
22490    }
22491}
22492#[repr(C)]
22493#[doc(hidden)]
22494pub struct ICoreWebView2NavigationCompletedEventHandler_Vtbl {
22495    pub base__: windows_core::IUnknown_Vtbl,
22496    pub Invoke: unsafe extern "system" fn(
22497        *mut core::ffi::c_void,
22498        *mut core::ffi::c_void,
22499        *mut core::ffi::c_void,
22500    ) -> windows_core::HRESULT,
22501}
22502pub trait ICoreWebView2NavigationCompletedEventHandler_Impl: windows_core::IUnknownImpl {
22503    fn Invoke(
22504        &self,
22505        sender: windows_core::Ref<'_, ICoreWebView2>,
22506        args: windows_core::Ref<'_, ICoreWebView2NavigationCompletedEventArgs>,
22507    ) -> windows_core::Result<()>;
22508}
22509impl ICoreWebView2NavigationCompletedEventHandler_Vtbl {
22510    pub const fn new<
22511        Identity: ICoreWebView2NavigationCompletedEventHandler_Impl,
22512        const OFFSET: isize,
22513    >() -> Self {
22514        unsafe extern "system" fn Invoke<
22515            Identity: ICoreWebView2NavigationCompletedEventHandler_Impl,
22516            const OFFSET: isize,
22517        >(
22518            this: *mut core::ffi::c_void,
22519            sender: *mut core::ffi::c_void,
22520            args: *mut core::ffi::c_void,
22521        ) -> windows_core::HRESULT {
22522            unsafe {
22523                let this: &Identity =
22524                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22525                ICoreWebView2NavigationCompletedEventHandler_Impl::Invoke(
22526                    this,
22527                    core::mem::transmute_copy(&sender),
22528                    core::mem::transmute_copy(&args),
22529                )
22530                .into()
22531            }
22532        }
22533        Self {
22534            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22535            Invoke: Invoke::<Identity, OFFSET>,
22536        }
22537    }
22538    pub fn matches(iid: &windows_core::GUID) -> bool {
22539        iid == &<ICoreWebView2NavigationCompletedEventHandler as windows_core::Interface>::IID
22540    }
22541}
22542impl windows_core::RuntimeName for ICoreWebView2NavigationCompletedEventHandler {}
22543windows_core::imp::define_interface!(
22544    ICoreWebView2NavigationStartingEventArgs,
22545    ICoreWebView2NavigationStartingEventArgs_Vtbl,
22546    0x5b495469_e119_438a_9b18_7604f25f2e49
22547);
22548windows_core::imp::interface_hierarchy!(
22549    ICoreWebView2NavigationStartingEventArgs,
22550    windows_core::IUnknown
22551);
22552impl ICoreWebView2NavigationStartingEventArgs {
22553    pub unsafe fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
22554        unsafe {
22555            (windows_core::Interface::vtable(self).Uri)(
22556                windows_core::Interface::as_raw(self),
22557                uri as _,
22558            )
22559            .ok()
22560        }
22561    }
22562    pub unsafe fn IsUserInitiated(
22563        &self,
22564        isuserinitiated: *mut windows_core::BOOL,
22565    ) -> windows_core::Result<()> {
22566        unsafe {
22567            (windows_core::Interface::vtable(self).IsUserInitiated)(
22568                windows_core::Interface::as_raw(self),
22569                isuserinitiated as _,
22570            )
22571            .ok()
22572        }
22573    }
22574    pub unsafe fn IsRedirected(
22575        &self,
22576        isredirected: *mut windows_core::BOOL,
22577    ) -> windows_core::Result<()> {
22578        unsafe {
22579            (windows_core::Interface::vtable(self).IsRedirected)(
22580                windows_core::Interface::as_raw(self),
22581                isredirected as _,
22582            )
22583            .ok()
22584        }
22585    }
22586    pub unsafe fn RequestHeaders(&self) -> windows_core::Result<ICoreWebView2HttpRequestHeaders> {
22587        unsafe {
22588            let mut result__ = core::mem::zeroed();
22589            (windows_core::Interface::vtable(self).RequestHeaders)(
22590                windows_core::Interface::as_raw(self),
22591                &mut result__,
22592            )
22593            .and_then(|| windows_core::Type::from_abi(result__))
22594        }
22595    }
22596    pub unsafe fn Cancel(&self, cancel: *mut windows_core::BOOL) -> windows_core::Result<()> {
22597        unsafe {
22598            (windows_core::Interface::vtable(self).Cancel)(
22599                windows_core::Interface::as_raw(self),
22600                cancel as _,
22601            )
22602            .ok()
22603        }
22604    }
22605    pub unsafe fn SetCancel(&self, cancel: bool) -> windows_core::Result<()> {
22606        unsafe {
22607            (windows_core::Interface::vtable(self).SetCancel)(
22608                windows_core::Interface::as_raw(self),
22609                cancel.into(),
22610            )
22611            .ok()
22612        }
22613    }
22614    pub unsafe fn NavigationId(&self, navigationid: *mut u64) -> windows_core::Result<()> {
22615        unsafe {
22616            (windows_core::Interface::vtable(self).NavigationId)(
22617                windows_core::Interface::as_raw(self),
22618                navigationid as _,
22619            )
22620            .ok()
22621        }
22622    }
22623}
22624#[repr(C)]
22625#[doc(hidden)]
22626pub struct ICoreWebView2NavigationStartingEventArgs_Vtbl {
22627    pub base__: windows_core::IUnknown_Vtbl,
22628    pub Uri: unsafe extern "system" fn(
22629        *mut core::ffi::c_void,
22630        *mut windows_core::PWSTR,
22631    ) -> windows_core::HRESULT,
22632    pub IsUserInitiated: unsafe extern "system" fn(
22633        *mut core::ffi::c_void,
22634        *mut windows_core::BOOL,
22635    ) -> windows_core::HRESULT,
22636    pub IsRedirected: unsafe extern "system" fn(
22637        *mut core::ffi::c_void,
22638        *mut windows_core::BOOL,
22639    ) -> windows_core::HRESULT,
22640    pub RequestHeaders: unsafe extern "system" fn(
22641        *mut core::ffi::c_void,
22642        *mut *mut core::ffi::c_void,
22643    ) -> windows_core::HRESULT,
22644    pub Cancel: unsafe extern "system" fn(
22645        *mut core::ffi::c_void,
22646        *mut windows_core::BOOL,
22647    ) -> windows_core::HRESULT,
22648    pub SetCancel: unsafe extern "system" fn(
22649        *mut core::ffi::c_void,
22650        windows_core::BOOL,
22651    ) -> windows_core::HRESULT,
22652    pub NavigationId:
22653        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
22654}
22655pub trait ICoreWebView2NavigationStartingEventArgs_Impl: windows_core::IUnknownImpl {
22656    fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
22657    fn IsUserInitiated(&self, isuserinitiated: *mut windows_core::BOOL)
22658        -> windows_core::Result<()>;
22659    fn IsRedirected(&self, isredirected: *mut windows_core::BOOL) -> windows_core::Result<()>;
22660    fn RequestHeaders(&self) -> windows_core::Result<ICoreWebView2HttpRequestHeaders>;
22661    fn Cancel(&self, cancel: *mut windows_core::BOOL) -> windows_core::Result<()>;
22662    fn SetCancel(&self, cancel: windows_core::BOOL) -> windows_core::Result<()>;
22663    fn NavigationId(&self, navigationid: *mut u64) -> windows_core::Result<()>;
22664}
22665impl ICoreWebView2NavigationStartingEventArgs_Vtbl {
22666    pub const fn new<
22667        Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22668        const OFFSET: isize,
22669    >() -> Self {
22670        unsafe extern "system" fn Uri<
22671            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22672            const OFFSET: isize,
22673        >(
22674            this: *mut core::ffi::c_void,
22675            uri: *mut windows_core::PWSTR,
22676        ) -> windows_core::HRESULT {
22677            unsafe {
22678                let this: &Identity =
22679                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22680                ICoreWebView2NavigationStartingEventArgs_Impl::Uri(
22681                    this,
22682                    core::mem::transmute_copy(&uri),
22683                )
22684                .into()
22685            }
22686        }
22687        unsafe extern "system" fn IsUserInitiated<
22688            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22689            const OFFSET: isize,
22690        >(
22691            this: *mut core::ffi::c_void,
22692            isuserinitiated: *mut windows_core::BOOL,
22693        ) -> windows_core::HRESULT {
22694            unsafe {
22695                let this: &Identity =
22696                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22697                ICoreWebView2NavigationStartingEventArgs_Impl::IsUserInitiated(
22698                    this,
22699                    core::mem::transmute_copy(&isuserinitiated),
22700                )
22701                .into()
22702            }
22703        }
22704        unsafe extern "system" fn IsRedirected<
22705            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22706            const OFFSET: isize,
22707        >(
22708            this: *mut core::ffi::c_void,
22709            isredirected: *mut windows_core::BOOL,
22710        ) -> windows_core::HRESULT {
22711            unsafe {
22712                let this: &Identity =
22713                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22714                ICoreWebView2NavigationStartingEventArgs_Impl::IsRedirected(
22715                    this,
22716                    core::mem::transmute_copy(&isredirected),
22717                )
22718                .into()
22719            }
22720        }
22721        unsafe extern "system" fn RequestHeaders<
22722            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22723            const OFFSET: isize,
22724        >(
22725            this: *mut core::ffi::c_void,
22726            requestheaders: *mut *mut core::ffi::c_void,
22727        ) -> windows_core::HRESULT {
22728            unsafe {
22729                let this: &Identity =
22730                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22731                match ICoreWebView2NavigationStartingEventArgs_Impl::RequestHeaders(this) {
22732                    Ok(ok__) => {
22733                        requestheaders.write(core::mem::transmute(ok__));
22734                        windows_core::HRESULT(0)
22735                    }
22736                    Err(err) => err.into(),
22737                }
22738            }
22739        }
22740        unsafe extern "system" fn Cancel<
22741            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22742            const OFFSET: isize,
22743        >(
22744            this: *mut core::ffi::c_void,
22745            cancel: *mut windows_core::BOOL,
22746        ) -> windows_core::HRESULT {
22747            unsafe {
22748                let this: &Identity =
22749                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22750                ICoreWebView2NavigationStartingEventArgs_Impl::Cancel(
22751                    this,
22752                    core::mem::transmute_copy(&cancel),
22753                )
22754                .into()
22755            }
22756        }
22757        unsafe extern "system" fn SetCancel<
22758            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22759            const OFFSET: isize,
22760        >(
22761            this: *mut core::ffi::c_void,
22762            cancel: windows_core::BOOL,
22763        ) -> windows_core::HRESULT {
22764            unsafe {
22765                let this: &Identity =
22766                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22767                ICoreWebView2NavigationStartingEventArgs_Impl::SetCancel(
22768                    this,
22769                    core::mem::transmute_copy(&cancel),
22770                )
22771                .into()
22772            }
22773        }
22774        unsafe extern "system" fn NavigationId<
22775            Identity: ICoreWebView2NavigationStartingEventArgs_Impl,
22776            const OFFSET: isize,
22777        >(
22778            this: *mut core::ffi::c_void,
22779            navigationid: *mut u64,
22780        ) -> windows_core::HRESULT {
22781            unsafe {
22782                let this: &Identity =
22783                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22784                ICoreWebView2NavigationStartingEventArgs_Impl::NavigationId(
22785                    this,
22786                    core::mem::transmute_copy(&navigationid),
22787                )
22788                .into()
22789            }
22790        }
22791        Self {
22792            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22793            Uri: Uri::<Identity, OFFSET>,
22794            IsUserInitiated: IsUserInitiated::<Identity, OFFSET>,
22795            IsRedirected: IsRedirected::<Identity, OFFSET>,
22796            RequestHeaders: RequestHeaders::<Identity, OFFSET>,
22797            Cancel: Cancel::<Identity, OFFSET>,
22798            SetCancel: SetCancel::<Identity, OFFSET>,
22799            NavigationId: NavigationId::<Identity, OFFSET>,
22800        }
22801    }
22802    pub fn matches(iid: &windows_core::GUID) -> bool {
22803        iid == &<ICoreWebView2NavigationStartingEventArgs as windows_core::Interface>::IID
22804    }
22805}
22806impl windows_core::RuntimeName for ICoreWebView2NavigationStartingEventArgs {}
22807windows_core::imp::define_interface!(
22808    ICoreWebView2NavigationStartingEventArgs2,
22809    ICoreWebView2NavigationStartingEventArgs2_Vtbl,
22810    0x9086be93_91aa_472d_a7e0_579f2ba006ad
22811);
22812impl core::ops::Deref for ICoreWebView2NavigationStartingEventArgs2 {
22813    type Target = ICoreWebView2NavigationStartingEventArgs;
22814    fn deref(&self) -> &Self::Target {
22815        unsafe { core::mem::transmute(self) }
22816    }
22817}
22818windows_core::imp::interface_hierarchy!(
22819    ICoreWebView2NavigationStartingEventArgs2,
22820    windows_core::IUnknown,
22821    ICoreWebView2NavigationStartingEventArgs
22822);
22823impl ICoreWebView2NavigationStartingEventArgs2 {
22824    pub unsafe fn AdditionalAllowedFrameAncestors(
22825        &self,
22826        value: *mut windows_core::PWSTR,
22827    ) -> windows_core::Result<()> {
22828        unsafe {
22829            (windows_core::Interface::vtable(self).AdditionalAllowedFrameAncestors)(
22830                windows_core::Interface::as_raw(self),
22831                value as _,
22832            )
22833            .ok()
22834        }
22835    }
22836    pub unsafe fn SetAdditionalAllowedFrameAncestors<P0>(
22837        &self,
22838        value: P0,
22839    ) -> windows_core::Result<()>
22840    where
22841        P0: windows_core::Param<windows_core::PCWSTR>,
22842    {
22843        unsafe {
22844            (windows_core::Interface::vtable(self).SetAdditionalAllowedFrameAncestors)(
22845                windows_core::Interface::as_raw(self),
22846                value.param().abi(),
22847            )
22848            .ok()
22849        }
22850    }
22851}
22852#[repr(C)]
22853#[doc(hidden)]
22854pub struct ICoreWebView2NavigationStartingEventArgs2_Vtbl {
22855    pub base__: ICoreWebView2NavigationStartingEventArgs_Vtbl,
22856    pub AdditionalAllowedFrameAncestors: unsafe extern "system" fn(
22857        *mut core::ffi::c_void,
22858        *mut windows_core::PWSTR,
22859    ) -> windows_core::HRESULT,
22860    pub SetAdditionalAllowedFrameAncestors: unsafe extern "system" fn(
22861        *mut core::ffi::c_void,
22862        windows_core::PCWSTR,
22863    ) -> windows_core::HRESULT,
22864}
22865pub trait ICoreWebView2NavigationStartingEventArgs2_Impl:
22866    ICoreWebView2NavigationStartingEventArgs_Impl
22867{
22868    fn AdditionalAllowedFrameAncestors(
22869        &self,
22870        value: *mut windows_core::PWSTR,
22871    ) -> windows_core::Result<()>;
22872    fn SetAdditionalAllowedFrameAncestors(
22873        &self,
22874        value: &windows_core::PCWSTR,
22875    ) -> windows_core::Result<()>;
22876}
22877impl ICoreWebView2NavigationStartingEventArgs2_Vtbl {
22878    pub const fn new<
22879        Identity: ICoreWebView2NavigationStartingEventArgs2_Impl,
22880        const OFFSET: isize,
22881    >() -> Self {
22882        unsafe extern "system" fn AdditionalAllowedFrameAncestors<
22883            Identity: ICoreWebView2NavigationStartingEventArgs2_Impl,
22884            const OFFSET: isize,
22885        >(
22886            this: *mut core::ffi::c_void,
22887            value: *mut windows_core::PWSTR,
22888        ) -> windows_core::HRESULT {
22889            unsafe {
22890                let this: &Identity =
22891                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22892                ICoreWebView2NavigationStartingEventArgs2_Impl::AdditionalAllowedFrameAncestors(
22893                    this,
22894                    core::mem::transmute_copy(&value),
22895                )
22896                .into()
22897            }
22898        }
22899        unsafe extern "system" fn SetAdditionalAllowedFrameAncestors<
22900            Identity: ICoreWebView2NavigationStartingEventArgs2_Impl,
22901            const OFFSET: isize,
22902        >(
22903            this: *mut core::ffi::c_void,
22904            value: windows_core::PCWSTR,
22905        ) -> windows_core::HRESULT {
22906            unsafe {
22907                let this: &Identity =
22908                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22909                ICoreWebView2NavigationStartingEventArgs2_Impl::SetAdditionalAllowedFrameAncestors(
22910                    this,
22911                    core::mem::transmute(&value),
22912                )
22913                .into()
22914            }
22915        }
22916        Self {
22917            base__: ICoreWebView2NavigationStartingEventArgs_Vtbl::new::<Identity, OFFSET>(),
22918            AdditionalAllowedFrameAncestors: AdditionalAllowedFrameAncestors::<Identity, OFFSET>,
22919            SetAdditionalAllowedFrameAncestors: SetAdditionalAllowedFrameAncestors::<
22920                Identity,
22921                OFFSET,
22922            >,
22923        }
22924    }
22925    pub fn matches(iid: &windows_core::GUID) -> bool {
22926        iid == &<ICoreWebView2NavigationStartingEventArgs2 as windows_core::Interface>::IID
22927            || iid == &<ICoreWebView2NavigationStartingEventArgs as windows_core::Interface>::IID
22928    }
22929}
22930impl windows_core::RuntimeName for ICoreWebView2NavigationStartingEventArgs2 {}
22931windows_core::imp::define_interface!(
22932    ICoreWebView2NavigationStartingEventArgs3,
22933    ICoreWebView2NavigationStartingEventArgs3_Vtbl,
22934    0xddffe494_4942_4bd2_ab73_35b8ff40e19f
22935);
22936impl core::ops::Deref for ICoreWebView2NavigationStartingEventArgs3 {
22937    type Target = ICoreWebView2NavigationStartingEventArgs2;
22938    fn deref(&self) -> &Self::Target {
22939        unsafe { core::mem::transmute(self) }
22940    }
22941}
22942windows_core::imp::interface_hierarchy!(
22943    ICoreWebView2NavigationStartingEventArgs3,
22944    windows_core::IUnknown,
22945    ICoreWebView2NavigationStartingEventArgs,
22946    ICoreWebView2NavigationStartingEventArgs2
22947);
22948impl ICoreWebView2NavigationStartingEventArgs3 {
22949    pub unsafe fn NavigationKind(
22950        &self,
22951        value: *mut COREWEBVIEW2_NAVIGATION_KIND,
22952    ) -> windows_core::Result<()> {
22953        unsafe {
22954            (windows_core::Interface::vtable(self).NavigationKind)(
22955                windows_core::Interface::as_raw(self),
22956                value as _,
22957            )
22958            .ok()
22959        }
22960    }
22961}
22962#[repr(C)]
22963#[doc(hidden)]
22964pub struct ICoreWebView2NavigationStartingEventArgs3_Vtbl {
22965    pub base__: ICoreWebView2NavigationStartingEventArgs2_Vtbl,
22966    pub NavigationKind: unsafe extern "system" fn(
22967        *mut core::ffi::c_void,
22968        *mut COREWEBVIEW2_NAVIGATION_KIND,
22969    ) -> windows_core::HRESULT,
22970}
22971pub trait ICoreWebView2NavigationStartingEventArgs3_Impl:
22972    ICoreWebView2NavigationStartingEventArgs2_Impl
22973{
22974    fn NavigationKind(&self, value: *mut COREWEBVIEW2_NAVIGATION_KIND) -> windows_core::Result<()>;
22975}
22976impl ICoreWebView2NavigationStartingEventArgs3_Vtbl {
22977    pub const fn new<
22978        Identity: ICoreWebView2NavigationStartingEventArgs3_Impl,
22979        const OFFSET: isize,
22980    >() -> Self {
22981        unsafe extern "system" fn NavigationKind<
22982            Identity: ICoreWebView2NavigationStartingEventArgs3_Impl,
22983            const OFFSET: isize,
22984        >(
22985            this: *mut core::ffi::c_void,
22986            value: *mut COREWEBVIEW2_NAVIGATION_KIND,
22987        ) -> windows_core::HRESULT {
22988            unsafe {
22989                let this: &Identity =
22990                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22991                ICoreWebView2NavigationStartingEventArgs3_Impl::NavigationKind(
22992                    this,
22993                    core::mem::transmute_copy(&value),
22994                )
22995                .into()
22996            }
22997        }
22998        Self {
22999            base__: ICoreWebView2NavigationStartingEventArgs2_Vtbl::new::<Identity, OFFSET>(),
23000            NavigationKind: NavigationKind::<Identity, OFFSET>,
23001        }
23002    }
23003    pub fn matches(iid: &windows_core::GUID) -> bool {
23004        iid == &<ICoreWebView2NavigationStartingEventArgs3 as windows_core::Interface>::IID
23005            || iid == &<ICoreWebView2NavigationStartingEventArgs as windows_core::Interface>::IID
23006            || iid == &<ICoreWebView2NavigationStartingEventArgs2 as windows_core::Interface>::IID
23007    }
23008}
23009impl windows_core::RuntimeName for ICoreWebView2NavigationStartingEventArgs3 {}
23010windows_core::imp::define_interface!(
23011    ICoreWebView2NavigationStartingEventHandler,
23012    ICoreWebView2NavigationStartingEventHandler_Vtbl,
23013    0x9adbe429_f36d_432b_9ddc_f8881fbd76e3
23014);
23015windows_core::imp::interface_hierarchy!(
23016    ICoreWebView2NavigationStartingEventHandler,
23017    windows_core::IUnknown
23018);
23019impl ICoreWebView2NavigationStartingEventHandler {
23020    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
23021    where
23022        P0: windows_core::Param<ICoreWebView2>,
23023        P1: windows_core::Param<ICoreWebView2NavigationStartingEventArgs>,
23024    {
23025        unsafe {
23026            (windows_core::Interface::vtable(self).Invoke)(
23027                windows_core::Interface::as_raw(self),
23028                sender.param().abi(),
23029                args.param().abi(),
23030            )
23031            .ok()
23032        }
23033    }
23034}
23035#[repr(C)]
23036#[doc(hidden)]
23037pub struct ICoreWebView2NavigationStartingEventHandler_Vtbl {
23038    pub base__: windows_core::IUnknown_Vtbl,
23039    pub Invoke: unsafe extern "system" fn(
23040        *mut core::ffi::c_void,
23041        *mut core::ffi::c_void,
23042        *mut core::ffi::c_void,
23043    ) -> windows_core::HRESULT,
23044}
23045pub trait ICoreWebView2NavigationStartingEventHandler_Impl: windows_core::IUnknownImpl {
23046    fn Invoke(
23047        &self,
23048        sender: windows_core::Ref<'_, ICoreWebView2>,
23049        args: windows_core::Ref<'_, ICoreWebView2NavigationStartingEventArgs>,
23050    ) -> windows_core::Result<()>;
23051}
23052impl ICoreWebView2NavigationStartingEventHandler_Vtbl {
23053    pub const fn new<
23054        Identity: ICoreWebView2NavigationStartingEventHandler_Impl,
23055        const OFFSET: isize,
23056    >() -> Self {
23057        unsafe extern "system" fn Invoke<
23058            Identity: ICoreWebView2NavigationStartingEventHandler_Impl,
23059            const OFFSET: isize,
23060        >(
23061            this: *mut core::ffi::c_void,
23062            sender: *mut core::ffi::c_void,
23063            args: *mut core::ffi::c_void,
23064        ) -> windows_core::HRESULT {
23065            unsafe {
23066                let this: &Identity =
23067                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23068                ICoreWebView2NavigationStartingEventHandler_Impl::Invoke(
23069                    this,
23070                    core::mem::transmute_copy(&sender),
23071                    core::mem::transmute_copy(&args),
23072                )
23073                .into()
23074            }
23075        }
23076        Self {
23077            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23078            Invoke: Invoke::<Identity, OFFSET>,
23079        }
23080    }
23081    pub fn matches(iid: &windows_core::GUID) -> bool {
23082        iid == &<ICoreWebView2NavigationStartingEventHandler as windows_core::Interface>::IID
23083    }
23084}
23085impl windows_core::RuntimeName for ICoreWebView2NavigationStartingEventHandler {}
23086windows_core::imp::define_interface!(
23087    ICoreWebView2NewBrowserVersionAvailableEventHandler,
23088    ICoreWebView2NewBrowserVersionAvailableEventHandler_Vtbl,
23089    0xf9a2976e_d34e_44fc_adee_81b6b57ca914
23090);
23091windows_core::imp::interface_hierarchy!(
23092    ICoreWebView2NewBrowserVersionAvailableEventHandler,
23093    windows_core::IUnknown
23094);
23095impl ICoreWebView2NewBrowserVersionAvailableEventHandler {
23096    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
23097    where
23098        P0: windows_core::Param<ICoreWebView2Environment>,
23099        P1: windows_core::Param<windows_core::IUnknown>,
23100    {
23101        unsafe {
23102            (windows_core::Interface::vtable(self).Invoke)(
23103                windows_core::Interface::as_raw(self),
23104                sender.param().abi(),
23105                args.param().abi(),
23106            )
23107            .ok()
23108        }
23109    }
23110}
23111#[repr(C)]
23112#[doc(hidden)]
23113pub struct ICoreWebView2NewBrowserVersionAvailableEventHandler_Vtbl {
23114    pub base__: windows_core::IUnknown_Vtbl,
23115    pub Invoke: unsafe extern "system" fn(
23116        *mut core::ffi::c_void,
23117        *mut core::ffi::c_void,
23118        *mut core::ffi::c_void,
23119    ) -> windows_core::HRESULT,
23120}
23121pub trait ICoreWebView2NewBrowserVersionAvailableEventHandler_Impl:
23122    windows_core::IUnknownImpl
23123{
23124    fn Invoke(
23125        &self,
23126        sender: windows_core::Ref<'_, ICoreWebView2Environment>,
23127        args: windows_core::Ref<'_, windows_core::IUnknown>,
23128    ) -> windows_core::Result<()>;
23129}
23130impl ICoreWebView2NewBrowserVersionAvailableEventHandler_Vtbl {
23131    pub const fn new<
23132        Identity: ICoreWebView2NewBrowserVersionAvailableEventHandler_Impl,
23133        const OFFSET: isize,
23134    >() -> Self {
23135        unsafe extern "system" fn Invoke<
23136            Identity: ICoreWebView2NewBrowserVersionAvailableEventHandler_Impl,
23137            const OFFSET: isize,
23138        >(
23139            this: *mut core::ffi::c_void,
23140            sender: *mut core::ffi::c_void,
23141            args: *mut core::ffi::c_void,
23142        ) -> windows_core::HRESULT {
23143            unsafe {
23144                let this: &Identity =
23145                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23146                ICoreWebView2NewBrowserVersionAvailableEventHandler_Impl::Invoke(
23147                    this,
23148                    core::mem::transmute_copy(&sender),
23149                    core::mem::transmute_copy(&args),
23150                )
23151                .into()
23152            }
23153        }
23154        Self {
23155            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23156            Invoke: Invoke::<Identity, OFFSET>,
23157        }
23158    }
23159    pub fn matches(iid: &windows_core::GUID) -> bool {
23160        iid == & < ICoreWebView2NewBrowserVersionAvailableEventHandler as windows_core::Interface >::IID
23161    }
23162}
23163impl windows_core::RuntimeName for ICoreWebView2NewBrowserVersionAvailableEventHandler {}
23164windows_core::imp::define_interface!(
23165    ICoreWebView2NewWindowRequestedEventArgs,
23166    ICoreWebView2NewWindowRequestedEventArgs_Vtbl,
23167    0x34acb11c_fc37_4418_9132_f9c21d1eafb9
23168);
23169windows_core::imp::interface_hierarchy!(
23170    ICoreWebView2NewWindowRequestedEventArgs,
23171    windows_core::IUnknown
23172);
23173impl ICoreWebView2NewWindowRequestedEventArgs {
23174    pub unsafe fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23175        unsafe {
23176            (windows_core::Interface::vtable(self).Uri)(
23177                windows_core::Interface::as_raw(self),
23178                uri as _,
23179            )
23180            .ok()
23181        }
23182    }
23183    pub unsafe fn SetNewWindow<P0>(&self, newwindow: P0) -> windows_core::Result<()>
23184    where
23185        P0: windows_core::Param<ICoreWebView2>,
23186    {
23187        unsafe {
23188            (windows_core::Interface::vtable(self).SetNewWindow)(
23189                windows_core::Interface::as_raw(self),
23190                newwindow.param().abi(),
23191            )
23192            .ok()
23193        }
23194    }
23195    pub unsafe fn NewWindow(&self) -> windows_core::Result<ICoreWebView2> {
23196        unsafe {
23197            let mut result__ = core::mem::zeroed();
23198            (windows_core::Interface::vtable(self).NewWindow)(
23199                windows_core::Interface::as_raw(self),
23200                &mut result__,
23201            )
23202            .and_then(|| windows_core::Type::from_abi(result__))
23203        }
23204    }
23205    pub unsafe fn SetHandled(&self, handled: bool) -> windows_core::Result<()> {
23206        unsafe {
23207            (windows_core::Interface::vtable(self).SetHandled)(
23208                windows_core::Interface::as_raw(self),
23209                handled.into(),
23210            )
23211            .ok()
23212        }
23213    }
23214    pub unsafe fn Handled(&self, handled: *mut windows_core::BOOL) -> windows_core::Result<()> {
23215        unsafe {
23216            (windows_core::Interface::vtable(self).Handled)(
23217                windows_core::Interface::as_raw(self),
23218                handled as _,
23219            )
23220            .ok()
23221        }
23222    }
23223    pub unsafe fn IsUserInitiated(
23224        &self,
23225        isuserinitiated: *mut windows_core::BOOL,
23226    ) -> windows_core::Result<()> {
23227        unsafe {
23228            (windows_core::Interface::vtable(self).IsUserInitiated)(
23229                windows_core::Interface::as_raw(self),
23230                isuserinitiated as _,
23231            )
23232            .ok()
23233        }
23234    }
23235    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
23236        unsafe {
23237            let mut result__ = core::mem::zeroed();
23238            (windows_core::Interface::vtable(self).GetDeferral)(
23239                windows_core::Interface::as_raw(self),
23240                &mut result__,
23241            )
23242            .and_then(|| windows_core::Type::from_abi(result__))
23243        }
23244    }
23245    pub unsafe fn WindowFeatures(&self) -> windows_core::Result<ICoreWebView2WindowFeatures> {
23246        unsafe {
23247            let mut result__ = core::mem::zeroed();
23248            (windows_core::Interface::vtable(self).WindowFeatures)(
23249                windows_core::Interface::as_raw(self),
23250                &mut result__,
23251            )
23252            .and_then(|| windows_core::Type::from_abi(result__))
23253        }
23254    }
23255}
23256#[repr(C)]
23257#[doc(hidden)]
23258pub struct ICoreWebView2NewWindowRequestedEventArgs_Vtbl {
23259    pub base__: windows_core::IUnknown_Vtbl,
23260    pub Uri: unsafe extern "system" fn(
23261        *mut core::ffi::c_void,
23262        *mut windows_core::PWSTR,
23263    ) -> windows_core::HRESULT,
23264    pub SetNewWindow: unsafe extern "system" fn(
23265        *mut core::ffi::c_void,
23266        *mut core::ffi::c_void,
23267    ) -> windows_core::HRESULT,
23268    pub NewWindow: unsafe extern "system" fn(
23269        *mut core::ffi::c_void,
23270        *mut *mut core::ffi::c_void,
23271    ) -> windows_core::HRESULT,
23272    pub SetHandled: unsafe extern "system" fn(
23273        *mut core::ffi::c_void,
23274        windows_core::BOOL,
23275    ) -> windows_core::HRESULT,
23276    pub Handled: unsafe extern "system" fn(
23277        *mut core::ffi::c_void,
23278        *mut windows_core::BOOL,
23279    ) -> windows_core::HRESULT,
23280    pub IsUserInitiated: unsafe extern "system" fn(
23281        *mut core::ffi::c_void,
23282        *mut windows_core::BOOL,
23283    ) -> windows_core::HRESULT,
23284    pub GetDeferral: unsafe extern "system" fn(
23285        *mut core::ffi::c_void,
23286        *mut *mut core::ffi::c_void,
23287    ) -> windows_core::HRESULT,
23288    pub WindowFeatures: unsafe extern "system" fn(
23289        *mut core::ffi::c_void,
23290        *mut *mut core::ffi::c_void,
23291    ) -> windows_core::HRESULT,
23292}
23293pub trait ICoreWebView2NewWindowRequestedEventArgs_Impl: windows_core::IUnknownImpl {
23294    fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
23295    fn SetNewWindow(
23296        &self,
23297        newwindow: windows_core::Ref<'_, ICoreWebView2>,
23298    ) -> windows_core::Result<()>;
23299    fn NewWindow(&self) -> windows_core::Result<ICoreWebView2>;
23300    fn SetHandled(&self, handled: windows_core::BOOL) -> windows_core::Result<()>;
23301    fn Handled(&self, handled: *mut windows_core::BOOL) -> windows_core::Result<()>;
23302    fn IsUserInitiated(&self, isuserinitiated: *mut windows_core::BOOL)
23303        -> windows_core::Result<()>;
23304    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
23305    fn WindowFeatures(&self) -> windows_core::Result<ICoreWebView2WindowFeatures>;
23306}
23307impl ICoreWebView2NewWindowRequestedEventArgs_Vtbl {
23308    pub const fn new<
23309        Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23310        const OFFSET: isize,
23311    >() -> Self {
23312        unsafe extern "system" fn Uri<
23313            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23314            const OFFSET: isize,
23315        >(
23316            this: *mut core::ffi::c_void,
23317            uri: *mut windows_core::PWSTR,
23318        ) -> windows_core::HRESULT {
23319            unsafe {
23320                let this: &Identity =
23321                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23322                ICoreWebView2NewWindowRequestedEventArgs_Impl::Uri(
23323                    this,
23324                    core::mem::transmute_copy(&uri),
23325                )
23326                .into()
23327            }
23328        }
23329        unsafe extern "system" fn SetNewWindow<
23330            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23331            const OFFSET: isize,
23332        >(
23333            this: *mut core::ffi::c_void,
23334            newwindow: *mut core::ffi::c_void,
23335        ) -> windows_core::HRESULT {
23336            unsafe {
23337                let this: &Identity =
23338                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23339                ICoreWebView2NewWindowRequestedEventArgs_Impl::SetNewWindow(
23340                    this,
23341                    core::mem::transmute_copy(&newwindow),
23342                )
23343                .into()
23344            }
23345        }
23346        unsafe extern "system" fn NewWindow<
23347            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23348            const OFFSET: isize,
23349        >(
23350            this: *mut core::ffi::c_void,
23351            newwindow: *mut *mut core::ffi::c_void,
23352        ) -> windows_core::HRESULT {
23353            unsafe {
23354                let this: &Identity =
23355                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23356                match ICoreWebView2NewWindowRequestedEventArgs_Impl::NewWindow(this) {
23357                    Ok(ok__) => {
23358                        newwindow.write(core::mem::transmute(ok__));
23359                        windows_core::HRESULT(0)
23360                    }
23361                    Err(err) => err.into(),
23362                }
23363            }
23364        }
23365        unsafe extern "system" fn SetHandled<
23366            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23367            const OFFSET: isize,
23368        >(
23369            this: *mut core::ffi::c_void,
23370            handled: windows_core::BOOL,
23371        ) -> windows_core::HRESULT {
23372            unsafe {
23373                let this: &Identity =
23374                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23375                ICoreWebView2NewWindowRequestedEventArgs_Impl::SetHandled(
23376                    this,
23377                    core::mem::transmute_copy(&handled),
23378                )
23379                .into()
23380            }
23381        }
23382        unsafe extern "system" fn Handled<
23383            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23384            const OFFSET: isize,
23385        >(
23386            this: *mut core::ffi::c_void,
23387            handled: *mut windows_core::BOOL,
23388        ) -> windows_core::HRESULT {
23389            unsafe {
23390                let this: &Identity =
23391                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23392                ICoreWebView2NewWindowRequestedEventArgs_Impl::Handled(
23393                    this,
23394                    core::mem::transmute_copy(&handled),
23395                )
23396                .into()
23397            }
23398        }
23399        unsafe extern "system" fn IsUserInitiated<
23400            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23401            const OFFSET: isize,
23402        >(
23403            this: *mut core::ffi::c_void,
23404            isuserinitiated: *mut windows_core::BOOL,
23405        ) -> windows_core::HRESULT {
23406            unsafe {
23407                let this: &Identity =
23408                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23409                ICoreWebView2NewWindowRequestedEventArgs_Impl::IsUserInitiated(
23410                    this,
23411                    core::mem::transmute_copy(&isuserinitiated),
23412                )
23413                .into()
23414            }
23415        }
23416        unsafe extern "system" fn GetDeferral<
23417            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23418            const OFFSET: isize,
23419        >(
23420            this: *mut core::ffi::c_void,
23421            deferral: *mut *mut core::ffi::c_void,
23422        ) -> windows_core::HRESULT {
23423            unsafe {
23424                let this: &Identity =
23425                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23426                match ICoreWebView2NewWindowRequestedEventArgs_Impl::GetDeferral(this) {
23427                    Ok(ok__) => {
23428                        deferral.write(core::mem::transmute(ok__));
23429                        windows_core::HRESULT(0)
23430                    }
23431                    Err(err) => err.into(),
23432                }
23433            }
23434        }
23435        unsafe extern "system" fn WindowFeatures<
23436            Identity: ICoreWebView2NewWindowRequestedEventArgs_Impl,
23437            const OFFSET: isize,
23438        >(
23439            this: *mut core::ffi::c_void,
23440            value: *mut *mut core::ffi::c_void,
23441        ) -> windows_core::HRESULT {
23442            unsafe {
23443                let this: &Identity =
23444                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23445                match ICoreWebView2NewWindowRequestedEventArgs_Impl::WindowFeatures(this) {
23446                    Ok(ok__) => {
23447                        value.write(core::mem::transmute(ok__));
23448                        windows_core::HRESULT(0)
23449                    }
23450                    Err(err) => err.into(),
23451                }
23452            }
23453        }
23454        Self {
23455            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23456            Uri: Uri::<Identity, OFFSET>,
23457            SetNewWindow: SetNewWindow::<Identity, OFFSET>,
23458            NewWindow: NewWindow::<Identity, OFFSET>,
23459            SetHandled: SetHandled::<Identity, OFFSET>,
23460            Handled: Handled::<Identity, OFFSET>,
23461            IsUserInitiated: IsUserInitiated::<Identity, OFFSET>,
23462            GetDeferral: GetDeferral::<Identity, OFFSET>,
23463            WindowFeatures: WindowFeatures::<Identity, OFFSET>,
23464        }
23465    }
23466    pub fn matches(iid: &windows_core::GUID) -> bool {
23467        iid == &<ICoreWebView2NewWindowRequestedEventArgs as windows_core::Interface>::IID
23468    }
23469}
23470impl windows_core::RuntimeName for ICoreWebView2NewWindowRequestedEventArgs {}
23471windows_core::imp::define_interface!(
23472    ICoreWebView2NewWindowRequestedEventArgs2,
23473    ICoreWebView2NewWindowRequestedEventArgs2_Vtbl,
23474    0xbbc7baed_74c6_4c92_b63a_7f5aeae03de3
23475);
23476impl core::ops::Deref for ICoreWebView2NewWindowRequestedEventArgs2 {
23477    type Target = ICoreWebView2NewWindowRequestedEventArgs;
23478    fn deref(&self) -> &Self::Target {
23479        unsafe { core::mem::transmute(self) }
23480    }
23481}
23482windows_core::imp::interface_hierarchy!(
23483    ICoreWebView2NewWindowRequestedEventArgs2,
23484    windows_core::IUnknown,
23485    ICoreWebView2NewWindowRequestedEventArgs
23486);
23487impl ICoreWebView2NewWindowRequestedEventArgs2 {
23488    pub unsafe fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23489        unsafe {
23490            (windows_core::Interface::vtable(self).Name)(
23491                windows_core::Interface::as_raw(self),
23492                value as _,
23493            )
23494            .ok()
23495        }
23496    }
23497}
23498#[repr(C)]
23499#[doc(hidden)]
23500pub struct ICoreWebView2NewWindowRequestedEventArgs2_Vtbl {
23501    pub base__: ICoreWebView2NewWindowRequestedEventArgs_Vtbl,
23502    pub Name: unsafe extern "system" fn(
23503        *mut core::ffi::c_void,
23504        *mut windows_core::PWSTR,
23505    ) -> windows_core::HRESULT,
23506}
23507pub trait ICoreWebView2NewWindowRequestedEventArgs2_Impl:
23508    ICoreWebView2NewWindowRequestedEventArgs_Impl
23509{
23510    fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
23511}
23512impl ICoreWebView2NewWindowRequestedEventArgs2_Vtbl {
23513    pub const fn new<
23514        Identity: ICoreWebView2NewWindowRequestedEventArgs2_Impl,
23515        const OFFSET: isize,
23516    >() -> Self {
23517        unsafe extern "system" fn Name<
23518            Identity: ICoreWebView2NewWindowRequestedEventArgs2_Impl,
23519            const OFFSET: isize,
23520        >(
23521            this: *mut core::ffi::c_void,
23522            value: *mut windows_core::PWSTR,
23523        ) -> windows_core::HRESULT {
23524            unsafe {
23525                let this: &Identity =
23526                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23527                ICoreWebView2NewWindowRequestedEventArgs2_Impl::Name(
23528                    this,
23529                    core::mem::transmute_copy(&value),
23530                )
23531                .into()
23532            }
23533        }
23534        Self {
23535            base__: ICoreWebView2NewWindowRequestedEventArgs_Vtbl::new::<Identity, OFFSET>(),
23536            Name: Name::<Identity, OFFSET>,
23537        }
23538    }
23539    pub fn matches(iid: &windows_core::GUID) -> bool {
23540        iid == &<ICoreWebView2NewWindowRequestedEventArgs2 as windows_core::Interface>::IID
23541            || iid == &<ICoreWebView2NewWindowRequestedEventArgs as windows_core::Interface>::IID
23542    }
23543}
23544impl windows_core::RuntimeName for ICoreWebView2NewWindowRequestedEventArgs2 {}
23545windows_core::imp::define_interface!(
23546    ICoreWebView2NewWindowRequestedEventArgs3,
23547    ICoreWebView2NewWindowRequestedEventArgs3_Vtbl,
23548    0x842bed3c_6ad6_4dd9_b938_28c96667ad66
23549);
23550impl core::ops::Deref for ICoreWebView2NewWindowRequestedEventArgs3 {
23551    type Target = ICoreWebView2NewWindowRequestedEventArgs2;
23552    fn deref(&self) -> &Self::Target {
23553        unsafe { core::mem::transmute(self) }
23554    }
23555}
23556windows_core::imp::interface_hierarchy!(
23557    ICoreWebView2NewWindowRequestedEventArgs3,
23558    windows_core::IUnknown,
23559    ICoreWebView2NewWindowRequestedEventArgs,
23560    ICoreWebView2NewWindowRequestedEventArgs2
23561);
23562impl ICoreWebView2NewWindowRequestedEventArgs3 {
23563    pub unsafe fn OriginalSourceFrameInfo(&self) -> windows_core::Result<ICoreWebView2FrameInfo> {
23564        unsafe {
23565            let mut result__ = core::mem::zeroed();
23566            (windows_core::Interface::vtable(self).OriginalSourceFrameInfo)(
23567                windows_core::Interface::as_raw(self),
23568                &mut result__,
23569            )
23570            .and_then(|| windows_core::Type::from_abi(result__))
23571        }
23572    }
23573}
23574#[repr(C)]
23575#[doc(hidden)]
23576pub struct ICoreWebView2NewWindowRequestedEventArgs3_Vtbl {
23577    pub base__: ICoreWebView2NewWindowRequestedEventArgs2_Vtbl,
23578    pub OriginalSourceFrameInfo: unsafe extern "system" fn(
23579        *mut core::ffi::c_void,
23580        *mut *mut core::ffi::c_void,
23581    ) -> windows_core::HRESULT,
23582}
23583pub trait ICoreWebView2NewWindowRequestedEventArgs3_Impl:
23584    ICoreWebView2NewWindowRequestedEventArgs2_Impl
23585{
23586    fn OriginalSourceFrameInfo(&self) -> windows_core::Result<ICoreWebView2FrameInfo>;
23587}
23588impl ICoreWebView2NewWindowRequestedEventArgs3_Vtbl {
23589    pub const fn new<
23590        Identity: ICoreWebView2NewWindowRequestedEventArgs3_Impl,
23591        const OFFSET: isize,
23592    >() -> Self {
23593        unsafe extern "system" fn OriginalSourceFrameInfo<
23594            Identity: ICoreWebView2NewWindowRequestedEventArgs3_Impl,
23595            const OFFSET: isize,
23596        >(
23597            this: *mut core::ffi::c_void,
23598            value: *mut *mut core::ffi::c_void,
23599        ) -> windows_core::HRESULT {
23600            unsafe {
23601                let this: &Identity =
23602                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23603                match ICoreWebView2NewWindowRequestedEventArgs3_Impl::OriginalSourceFrameInfo(this)
23604                {
23605                    Ok(ok__) => {
23606                        value.write(core::mem::transmute(ok__));
23607                        windows_core::HRESULT(0)
23608                    }
23609                    Err(err) => err.into(),
23610                }
23611            }
23612        }
23613        Self {
23614            base__: ICoreWebView2NewWindowRequestedEventArgs2_Vtbl::new::<Identity, OFFSET>(),
23615            OriginalSourceFrameInfo: OriginalSourceFrameInfo::<Identity, OFFSET>,
23616        }
23617    }
23618    pub fn matches(iid: &windows_core::GUID) -> bool {
23619        iid == &<ICoreWebView2NewWindowRequestedEventArgs3 as windows_core::Interface>::IID
23620            || iid == &<ICoreWebView2NewWindowRequestedEventArgs as windows_core::Interface>::IID
23621            || iid == &<ICoreWebView2NewWindowRequestedEventArgs2 as windows_core::Interface>::IID
23622    }
23623}
23624impl windows_core::RuntimeName for ICoreWebView2NewWindowRequestedEventArgs3 {}
23625windows_core::imp::define_interface!(
23626    ICoreWebView2NewWindowRequestedEventHandler,
23627    ICoreWebView2NewWindowRequestedEventHandler_Vtbl,
23628    0xd4c185fe_c81c_4989_97af_2d3fa7ab5651
23629);
23630windows_core::imp::interface_hierarchy!(
23631    ICoreWebView2NewWindowRequestedEventHandler,
23632    windows_core::IUnknown
23633);
23634impl ICoreWebView2NewWindowRequestedEventHandler {
23635    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
23636    where
23637        P0: windows_core::Param<ICoreWebView2>,
23638        P1: windows_core::Param<ICoreWebView2NewWindowRequestedEventArgs>,
23639    {
23640        unsafe {
23641            (windows_core::Interface::vtable(self).Invoke)(
23642                windows_core::Interface::as_raw(self),
23643                sender.param().abi(),
23644                args.param().abi(),
23645            )
23646            .ok()
23647        }
23648    }
23649}
23650#[repr(C)]
23651#[doc(hidden)]
23652pub struct ICoreWebView2NewWindowRequestedEventHandler_Vtbl {
23653    pub base__: windows_core::IUnknown_Vtbl,
23654    pub Invoke: unsafe extern "system" fn(
23655        *mut core::ffi::c_void,
23656        *mut core::ffi::c_void,
23657        *mut core::ffi::c_void,
23658    ) -> windows_core::HRESULT,
23659}
23660pub trait ICoreWebView2NewWindowRequestedEventHandler_Impl: windows_core::IUnknownImpl {
23661    fn Invoke(
23662        &self,
23663        sender: windows_core::Ref<'_, ICoreWebView2>,
23664        args: windows_core::Ref<'_, ICoreWebView2NewWindowRequestedEventArgs>,
23665    ) -> windows_core::Result<()>;
23666}
23667impl ICoreWebView2NewWindowRequestedEventHandler_Vtbl {
23668    pub const fn new<
23669        Identity: ICoreWebView2NewWindowRequestedEventHandler_Impl,
23670        const OFFSET: isize,
23671    >() -> Self {
23672        unsafe extern "system" fn Invoke<
23673            Identity: ICoreWebView2NewWindowRequestedEventHandler_Impl,
23674            const OFFSET: isize,
23675        >(
23676            this: *mut core::ffi::c_void,
23677            sender: *mut core::ffi::c_void,
23678            args: *mut core::ffi::c_void,
23679        ) -> windows_core::HRESULT {
23680            unsafe {
23681                let this: &Identity =
23682                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23683                ICoreWebView2NewWindowRequestedEventHandler_Impl::Invoke(
23684                    this,
23685                    core::mem::transmute_copy(&sender),
23686                    core::mem::transmute_copy(&args),
23687                )
23688                .into()
23689            }
23690        }
23691        Self {
23692            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23693            Invoke: Invoke::<Identity, OFFSET>,
23694        }
23695    }
23696    pub fn matches(iid: &windows_core::GUID) -> bool {
23697        iid == &<ICoreWebView2NewWindowRequestedEventHandler as windows_core::Interface>::IID
23698    }
23699}
23700impl windows_core::RuntimeName for ICoreWebView2NewWindowRequestedEventHandler {}
23701windows_core::imp::define_interface!(
23702    ICoreWebView2NonClientRegionChangedEventArgs,
23703    ICoreWebView2NonClientRegionChangedEventArgs_Vtbl,
23704    0xab71d500_0820_4a52_809c_48db04ff93bf
23705);
23706windows_core::imp::interface_hierarchy!(
23707    ICoreWebView2NonClientRegionChangedEventArgs,
23708    windows_core::IUnknown
23709);
23710impl ICoreWebView2NonClientRegionChangedEventArgs {
23711    pub unsafe fn RegionKind(
23712        &self,
23713        value: *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
23714    ) -> windows_core::Result<()> {
23715        unsafe {
23716            (windows_core::Interface::vtable(self).RegionKind)(
23717                windows_core::Interface::as_raw(self),
23718                value as _,
23719            )
23720            .ok()
23721        }
23722    }
23723}
23724#[repr(C)]
23725#[doc(hidden)]
23726pub struct ICoreWebView2NonClientRegionChangedEventArgs_Vtbl {
23727    pub base__: windows_core::IUnknown_Vtbl,
23728    pub RegionKind: unsafe extern "system" fn(
23729        *mut core::ffi::c_void,
23730        *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
23731    ) -> windows_core::HRESULT,
23732}
23733pub trait ICoreWebView2NonClientRegionChangedEventArgs_Impl: windows_core::IUnknownImpl {
23734    fn RegionKind(
23735        &self,
23736        value: *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
23737    ) -> windows_core::Result<()>;
23738}
23739impl ICoreWebView2NonClientRegionChangedEventArgs_Vtbl {
23740    pub const fn new<
23741        Identity: ICoreWebView2NonClientRegionChangedEventArgs_Impl,
23742        const OFFSET: isize,
23743    >() -> Self {
23744        unsafe extern "system" fn RegionKind<
23745            Identity: ICoreWebView2NonClientRegionChangedEventArgs_Impl,
23746            const OFFSET: isize,
23747        >(
23748            this: *mut core::ffi::c_void,
23749            value: *mut COREWEBVIEW2_NON_CLIENT_REGION_KIND,
23750        ) -> windows_core::HRESULT {
23751            unsafe {
23752                let this: &Identity =
23753                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23754                ICoreWebView2NonClientRegionChangedEventArgs_Impl::RegionKind(
23755                    this,
23756                    core::mem::transmute_copy(&value),
23757                )
23758                .into()
23759            }
23760        }
23761        Self {
23762            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23763            RegionKind: RegionKind::<Identity, OFFSET>,
23764        }
23765    }
23766    pub fn matches(iid: &windows_core::GUID) -> bool {
23767        iid == &<ICoreWebView2NonClientRegionChangedEventArgs as windows_core::Interface>::IID
23768    }
23769}
23770impl windows_core::RuntimeName for ICoreWebView2NonClientRegionChangedEventArgs {}
23771windows_core::imp::define_interface!(
23772    ICoreWebView2NonClientRegionChangedEventHandler,
23773    ICoreWebView2NonClientRegionChangedEventHandler_Vtbl,
23774    0x4a794e66_aa6c_46bd_93a3_382196837680
23775);
23776windows_core::imp::interface_hierarchy!(
23777    ICoreWebView2NonClientRegionChangedEventHandler,
23778    windows_core::IUnknown
23779);
23780impl ICoreWebView2NonClientRegionChangedEventHandler {
23781    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
23782    where
23783        P0: windows_core::Param<ICoreWebView2CompositionController>,
23784        P1: windows_core::Param<ICoreWebView2NonClientRegionChangedEventArgs>,
23785    {
23786        unsafe {
23787            (windows_core::Interface::vtable(self).Invoke)(
23788                windows_core::Interface::as_raw(self),
23789                sender.param().abi(),
23790                args.param().abi(),
23791            )
23792            .ok()
23793        }
23794    }
23795}
23796#[repr(C)]
23797#[doc(hidden)]
23798pub struct ICoreWebView2NonClientRegionChangedEventHandler_Vtbl {
23799    pub base__: windows_core::IUnknown_Vtbl,
23800    pub Invoke: unsafe extern "system" fn(
23801        *mut core::ffi::c_void,
23802        *mut core::ffi::c_void,
23803        *mut core::ffi::c_void,
23804    ) -> windows_core::HRESULT,
23805}
23806pub trait ICoreWebView2NonClientRegionChangedEventHandler_Impl: windows_core::IUnknownImpl {
23807    fn Invoke(
23808        &self,
23809        sender: windows_core::Ref<'_, ICoreWebView2CompositionController>,
23810        args: windows_core::Ref<'_, ICoreWebView2NonClientRegionChangedEventArgs>,
23811    ) -> windows_core::Result<()>;
23812}
23813impl ICoreWebView2NonClientRegionChangedEventHandler_Vtbl {
23814    pub const fn new<
23815        Identity: ICoreWebView2NonClientRegionChangedEventHandler_Impl,
23816        const OFFSET: isize,
23817    >() -> Self {
23818        unsafe extern "system" fn Invoke<
23819            Identity: ICoreWebView2NonClientRegionChangedEventHandler_Impl,
23820            const OFFSET: isize,
23821        >(
23822            this: *mut core::ffi::c_void,
23823            sender: *mut core::ffi::c_void,
23824            args: *mut core::ffi::c_void,
23825        ) -> windows_core::HRESULT {
23826            unsafe {
23827                let this: &Identity =
23828                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23829                ICoreWebView2NonClientRegionChangedEventHandler_Impl::Invoke(
23830                    this,
23831                    core::mem::transmute_copy(&sender),
23832                    core::mem::transmute_copy(&args),
23833                )
23834                .into()
23835            }
23836        }
23837        Self {
23838            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23839            Invoke: Invoke::<Identity, OFFSET>,
23840        }
23841    }
23842    pub fn matches(iid: &windows_core::GUID) -> bool {
23843        iid == &<ICoreWebView2NonClientRegionChangedEventHandler as windows_core::Interface>::IID
23844    }
23845}
23846impl windows_core::RuntimeName for ICoreWebView2NonClientRegionChangedEventHandler {}
23847windows_core::imp::define_interface!(
23848    ICoreWebView2Notification,
23849    ICoreWebView2Notification_Vtbl,
23850    0xb7434d98_6bc8_419d_9da5_fb5a96d4dacd
23851);
23852windows_core::imp::interface_hierarchy!(ICoreWebView2Notification, windows_core::IUnknown);
23853impl ICoreWebView2Notification {
23854    pub unsafe fn add_CloseRequested<P0>(
23855        &self,
23856        eventhandler: P0,
23857        token: *mut i64,
23858    ) -> windows_core::Result<()>
23859    where
23860        P0: windows_core::Param<ICoreWebView2NotificationCloseRequestedEventHandler>,
23861    {
23862        unsafe {
23863            (windows_core::Interface::vtable(self).add_CloseRequested)(
23864                windows_core::Interface::as_raw(self),
23865                eventhandler.param().abi(),
23866                token as _,
23867            )
23868            .ok()
23869        }
23870    }
23871    pub unsafe fn remove_CloseRequested(&self, token: i64) -> windows_core::Result<()> {
23872        unsafe {
23873            (windows_core::Interface::vtable(self).remove_CloseRequested)(
23874                windows_core::Interface::as_raw(self),
23875                token,
23876            )
23877            .ok()
23878        }
23879    }
23880    pub unsafe fn ReportShown(&self) -> windows_core::Result<()> {
23881        unsafe {
23882            (windows_core::Interface::vtable(self).ReportShown)(windows_core::Interface::as_raw(
23883                self,
23884            ))
23885            .ok()
23886        }
23887    }
23888    pub unsafe fn ReportClicked(&self) -> windows_core::Result<()> {
23889        unsafe {
23890            (windows_core::Interface::vtable(self).ReportClicked)(windows_core::Interface::as_raw(
23891                self,
23892            ))
23893            .ok()
23894        }
23895    }
23896    pub unsafe fn ReportClosed(&self) -> windows_core::Result<()> {
23897        unsafe {
23898            (windows_core::Interface::vtable(self).ReportClosed)(windows_core::Interface::as_raw(
23899                self,
23900            ))
23901            .ok()
23902        }
23903    }
23904    pub unsafe fn Body(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23905        unsafe {
23906            (windows_core::Interface::vtable(self).Body)(
23907                windows_core::Interface::as_raw(self),
23908                value as _,
23909            )
23910            .ok()
23911        }
23912    }
23913    pub unsafe fn Direction(
23914        &self,
23915        value: *mut COREWEBVIEW2_TEXT_DIRECTION_KIND,
23916    ) -> windows_core::Result<()> {
23917        unsafe {
23918            (windows_core::Interface::vtable(self).Direction)(
23919                windows_core::Interface::as_raw(self),
23920                value as _,
23921            )
23922            .ok()
23923        }
23924    }
23925    pub unsafe fn Language(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23926        unsafe {
23927            (windows_core::Interface::vtable(self).Language)(
23928                windows_core::Interface::as_raw(self),
23929                value as _,
23930            )
23931            .ok()
23932        }
23933    }
23934    pub unsafe fn Tag(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23935        unsafe {
23936            (windows_core::Interface::vtable(self).Tag)(
23937                windows_core::Interface::as_raw(self),
23938                value as _,
23939            )
23940            .ok()
23941        }
23942    }
23943    pub unsafe fn IconUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23944        unsafe {
23945            (windows_core::Interface::vtable(self).IconUri)(
23946                windows_core::Interface::as_raw(self),
23947                value as _,
23948            )
23949            .ok()
23950        }
23951    }
23952    pub unsafe fn Title(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23953        unsafe {
23954            (windows_core::Interface::vtable(self).Title)(
23955                windows_core::Interface::as_raw(self),
23956                value as _,
23957            )
23958            .ok()
23959        }
23960    }
23961    pub unsafe fn BadgeUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23962        unsafe {
23963            (windows_core::Interface::vtable(self).BadgeUri)(
23964                windows_core::Interface::as_raw(self),
23965                value as _,
23966            )
23967            .ok()
23968        }
23969    }
23970    pub unsafe fn BodyImageUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
23971        unsafe {
23972            (windows_core::Interface::vtable(self).BodyImageUri)(
23973                windows_core::Interface::as_raw(self),
23974                value as _,
23975            )
23976            .ok()
23977        }
23978    }
23979    pub unsafe fn ShouldRenotify(
23980        &self,
23981        value: *mut windows_core::BOOL,
23982    ) -> windows_core::Result<()> {
23983        unsafe {
23984            (windows_core::Interface::vtable(self).ShouldRenotify)(
23985                windows_core::Interface::as_raw(self),
23986                value as _,
23987            )
23988            .ok()
23989        }
23990    }
23991    pub unsafe fn RequiresInteraction(
23992        &self,
23993        value: *mut windows_core::BOOL,
23994    ) -> windows_core::Result<()> {
23995        unsafe {
23996            (windows_core::Interface::vtable(self).RequiresInteraction)(
23997                windows_core::Interface::as_raw(self),
23998                value as _,
23999            )
24000            .ok()
24001        }
24002    }
24003    pub unsafe fn IsSilent(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
24004        unsafe {
24005            (windows_core::Interface::vtable(self).IsSilent)(
24006                windows_core::Interface::as_raw(self),
24007                value as _,
24008            )
24009            .ok()
24010        }
24011    }
24012    pub unsafe fn Timestamp(&self, value: *mut f64) -> windows_core::Result<()> {
24013        unsafe {
24014            (windows_core::Interface::vtable(self).Timestamp)(
24015                windows_core::Interface::as_raw(self),
24016                value as _,
24017            )
24018            .ok()
24019        }
24020    }
24021    pub unsafe fn GetVibrationPattern(
24022        &self,
24023        count: *mut u32,
24024        vibrationpattern: *mut *mut u64,
24025    ) -> windows_core::Result<()> {
24026        unsafe {
24027            (windows_core::Interface::vtable(self).GetVibrationPattern)(
24028                windows_core::Interface::as_raw(self),
24029                count as _,
24030                vibrationpattern as _,
24031            )
24032            .ok()
24033        }
24034    }
24035}
24036#[repr(C)]
24037#[doc(hidden)]
24038pub struct ICoreWebView2Notification_Vtbl {
24039    pub base__: windows_core::IUnknown_Vtbl,
24040    pub add_CloseRequested: unsafe extern "system" fn(
24041        *mut core::ffi::c_void,
24042        *mut core::ffi::c_void,
24043        *mut i64,
24044    ) -> windows_core::HRESULT,
24045    pub remove_CloseRequested:
24046        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
24047    pub ReportShown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
24048    pub ReportClicked: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
24049    pub ReportClosed: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
24050    pub Body: unsafe extern "system" fn(
24051        *mut core::ffi::c_void,
24052        *mut windows_core::PWSTR,
24053    ) -> windows_core::HRESULT,
24054    pub Direction: unsafe extern "system" fn(
24055        *mut core::ffi::c_void,
24056        *mut COREWEBVIEW2_TEXT_DIRECTION_KIND,
24057    ) -> windows_core::HRESULT,
24058    pub Language: unsafe extern "system" fn(
24059        *mut core::ffi::c_void,
24060        *mut windows_core::PWSTR,
24061    ) -> windows_core::HRESULT,
24062    pub Tag: unsafe extern "system" fn(
24063        *mut core::ffi::c_void,
24064        *mut windows_core::PWSTR,
24065    ) -> windows_core::HRESULT,
24066    pub IconUri: unsafe extern "system" fn(
24067        *mut core::ffi::c_void,
24068        *mut windows_core::PWSTR,
24069    ) -> windows_core::HRESULT,
24070    pub Title: unsafe extern "system" fn(
24071        *mut core::ffi::c_void,
24072        *mut windows_core::PWSTR,
24073    ) -> windows_core::HRESULT,
24074    pub BadgeUri: unsafe extern "system" fn(
24075        *mut core::ffi::c_void,
24076        *mut windows_core::PWSTR,
24077    ) -> windows_core::HRESULT,
24078    pub BodyImageUri: unsafe extern "system" fn(
24079        *mut core::ffi::c_void,
24080        *mut windows_core::PWSTR,
24081    ) -> windows_core::HRESULT,
24082    pub ShouldRenotify: unsafe extern "system" fn(
24083        *mut core::ffi::c_void,
24084        *mut windows_core::BOOL,
24085    ) -> windows_core::HRESULT,
24086    pub RequiresInteraction: unsafe extern "system" fn(
24087        *mut core::ffi::c_void,
24088        *mut windows_core::BOOL,
24089    ) -> windows_core::HRESULT,
24090    pub IsSilent: unsafe extern "system" fn(
24091        *mut core::ffi::c_void,
24092        *mut windows_core::BOOL,
24093    ) -> windows_core::HRESULT,
24094    pub Timestamp:
24095        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
24096    pub GetVibrationPattern: unsafe extern "system" fn(
24097        *mut core::ffi::c_void,
24098        *mut u32,
24099        *mut *mut u64,
24100    ) -> windows_core::HRESULT,
24101}
24102pub trait ICoreWebView2Notification_Impl: windows_core::IUnknownImpl {
24103    fn add_CloseRequested(
24104        &self,
24105        eventhandler: windows_core::Ref<'_, ICoreWebView2NotificationCloseRequestedEventHandler>,
24106        token: *mut i64,
24107    ) -> windows_core::Result<()>;
24108    fn remove_CloseRequested(&self, token: i64) -> windows_core::Result<()>;
24109    fn ReportShown(&self) -> windows_core::Result<()>;
24110    fn ReportClicked(&self) -> windows_core::Result<()>;
24111    fn ReportClosed(&self) -> windows_core::Result<()>;
24112    fn Body(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24113    fn Direction(&self, value: *mut COREWEBVIEW2_TEXT_DIRECTION_KIND) -> windows_core::Result<()>;
24114    fn Language(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24115    fn Tag(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24116    fn IconUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24117    fn Title(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24118    fn BadgeUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24119    fn BodyImageUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24120    fn ShouldRenotify(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
24121    fn RequiresInteraction(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
24122    fn IsSilent(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
24123    fn Timestamp(&self, value: *mut f64) -> windows_core::Result<()>;
24124    fn GetVibrationPattern(
24125        &self,
24126        count: *mut u32,
24127        vibrationpattern: *mut *mut u64,
24128    ) -> windows_core::Result<()>;
24129}
24130impl ICoreWebView2Notification_Vtbl {
24131    pub const fn new<Identity: ICoreWebView2Notification_Impl, const OFFSET: isize>() -> Self {
24132        unsafe extern "system" fn add_CloseRequested<
24133            Identity: ICoreWebView2Notification_Impl,
24134            const OFFSET: isize,
24135        >(
24136            this: *mut core::ffi::c_void,
24137            eventhandler: *mut core::ffi::c_void,
24138            token: *mut i64,
24139        ) -> windows_core::HRESULT {
24140            unsafe {
24141                let this: &Identity =
24142                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24143                ICoreWebView2Notification_Impl::add_CloseRequested(
24144                    this,
24145                    core::mem::transmute_copy(&eventhandler),
24146                    core::mem::transmute_copy(&token),
24147                )
24148                .into()
24149            }
24150        }
24151        unsafe extern "system" fn remove_CloseRequested<
24152            Identity: ICoreWebView2Notification_Impl,
24153            const OFFSET: isize,
24154        >(
24155            this: *mut core::ffi::c_void,
24156            token: i64,
24157        ) -> windows_core::HRESULT {
24158            unsafe {
24159                let this: &Identity =
24160                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24161                ICoreWebView2Notification_Impl::remove_CloseRequested(
24162                    this,
24163                    core::mem::transmute_copy(&token),
24164                )
24165                .into()
24166            }
24167        }
24168        unsafe extern "system" fn ReportShown<
24169            Identity: ICoreWebView2Notification_Impl,
24170            const OFFSET: isize,
24171        >(
24172            this: *mut core::ffi::c_void,
24173        ) -> windows_core::HRESULT {
24174            unsafe {
24175                let this: &Identity =
24176                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24177                ICoreWebView2Notification_Impl::ReportShown(this).into()
24178            }
24179        }
24180        unsafe extern "system" fn ReportClicked<
24181            Identity: ICoreWebView2Notification_Impl,
24182            const OFFSET: isize,
24183        >(
24184            this: *mut core::ffi::c_void,
24185        ) -> windows_core::HRESULT {
24186            unsafe {
24187                let this: &Identity =
24188                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24189                ICoreWebView2Notification_Impl::ReportClicked(this).into()
24190            }
24191        }
24192        unsafe extern "system" fn ReportClosed<
24193            Identity: ICoreWebView2Notification_Impl,
24194            const OFFSET: isize,
24195        >(
24196            this: *mut core::ffi::c_void,
24197        ) -> windows_core::HRESULT {
24198            unsafe {
24199                let this: &Identity =
24200                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24201                ICoreWebView2Notification_Impl::ReportClosed(this).into()
24202            }
24203        }
24204        unsafe extern "system" fn Body<
24205            Identity: ICoreWebView2Notification_Impl,
24206            const OFFSET: isize,
24207        >(
24208            this: *mut core::ffi::c_void,
24209            value: *mut windows_core::PWSTR,
24210        ) -> windows_core::HRESULT {
24211            unsafe {
24212                let this: &Identity =
24213                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24214                ICoreWebView2Notification_Impl::Body(this, core::mem::transmute_copy(&value)).into()
24215            }
24216        }
24217        unsafe extern "system" fn Direction<
24218            Identity: ICoreWebView2Notification_Impl,
24219            const OFFSET: isize,
24220        >(
24221            this: *mut core::ffi::c_void,
24222            value: *mut COREWEBVIEW2_TEXT_DIRECTION_KIND,
24223        ) -> windows_core::HRESULT {
24224            unsafe {
24225                let this: &Identity =
24226                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24227                ICoreWebView2Notification_Impl::Direction(this, core::mem::transmute_copy(&value))
24228                    .into()
24229            }
24230        }
24231        unsafe extern "system" fn Language<
24232            Identity: ICoreWebView2Notification_Impl,
24233            const OFFSET: isize,
24234        >(
24235            this: *mut core::ffi::c_void,
24236            value: *mut windows_core::PWSTR,
24237        ) -> windows_core::HRESULT {
24238            unsafe {
24239                let this: &Identity =
24240                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24241                ICoreWebView2Notification_Impl::Language(this, core::mem::transmute_copy(&value))
24242                    .into()
24243            }
24244        }
24245        unsafe extern "system" fn Tag<
24246            Identity: ICoreWebView2Notification_Impl,
24247            const OFFSET: isize,
24248        >(
24249            this: *mut core::ffi::c_void,
24250            value: *mut windows_core::PWSTR,
24251        ) -> windows_core::HRESULT {
24252            unsafe {
24253                let this: &Identity =
24254                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24255                ICoreWebView2Notification_Impl::Tag(this, core::mem::transmute_copy(&value)).into()
24256            }
24257        }
24258        unsafe extern "system" fn IconUri<
24259            Identity: ICoreWebView2Notification_Impl,
24260            const OFFSET: isize,
24261        >(
24262            this: *mut core::ffi::c_void,
24263            value: *mut windows_core::PWSTR,
24264        ) -> windows_core::HRESULT {
24265            unsafe {
24266                let this: &Identity =
24267                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24268                ICoreWebView2Notification_Impl::IconUri(this, core::mem::transmute_copy(&value))
24269                    .into()
24270            }
24271        }
24272        unsafe extern "system" fn Title<
24273            Identity: ICoreWebView2Notification_Impl,
24274            const OFFSET: isize,
24275        >(
24276            this: *mut core::ffi::c_void,
24277            value: *mut windows_core::PWSTR,
24278        ) -> windows_core::HRESULT {
24279            unsafe {
24280                let this: &Identity =
24281                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24282                ICoreWebView2Notification_Impl::Title(this, core::mem::transmute_copy(&value))
24283                    .into()
24284            }
24285        }
24286        unsafe extern "system" fn BadgeUri<
24287            Identity: ICoreWebView2Notification_Impl,
24288            const OFFSET: isize,
24289        >(
24290            this: *mut core::ffi::c_void,
24291            value: *mut windows_core::PWSTR,
24292        ) -> windows_core::HRESULT {
24293            unsafe {
24294                let this: &Identity =
24295                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24296                ICoreWebView2Notification_Impl::BadgeUri(this, core::mem::transmute_copy(&value))
24297                    .into()
24298            }
24299        }
24300        unsafe extern "system" fn BodyImageUri<
24301            Identity: ICoreWebView2Notification_Impl,
24302            const OFFSET: isize,
24303        >(
24304            this: *mut core::ffi::c_void,
24305            value: *mut windows_core::PWSTR,
24306        ) -> windows_core::HRESULT {
24307            unsafe {
24308                let this: &Identity =
24309                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24310                ICoreWebView2Notification_Impl::BodyImageUri(
24311                    this,
24312                    core::mem::transmute_copy(&value),
24313                )
24314                .into()
24315            }
24316        }
24317        unsafe extern "system" fn ShouldRenotify<
24318            Identity: ICoreWebView2Notification_Impl,
24319            const OFFSET: isize,
24320        >(
24321            this: *mut core::ffi::c_void,
24322            value: *mut windows_core::BOOL,
24323        ) -> windows_core::HRESULT {
24324            unsafe {
24325                let this: &Identity =
24326                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24327                ICoreWebView2Notification_Impl::ShouldRenotify(
24328                    this,
24329                    core::mem::transmute_copy(&value),
24330                )
24331                .into()
24332            }
24333        }
24334        unsafe extern "system" fn RequiresInteraction<
24335            Identity: ICoreWebView2Notification_Impl,
24336            const OFFSET: isize,
24337        >(
24338            this: *mut core::ffi::c_void,
24339            value: *mut windows_core::BOOL,
24340        ) -> windows_core::HRESULT {
24341            unsafe {
24342                let this: &Identity =
24343                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24344                ICoreWebView2Notification_Impl::RequiresInteraction(
24345                    this,
24346                    core::mem::transmute_copy(&value),
24347                )
24348                .into()
24349            }
24350        }
24351        unsafe extern "system" fn IsSilent<
24352            Identity: ICoreWebView2Notification_Impl,
24353            const OFFSET: isize,
24354        >(
24355            this: *mut core::ffi::c_void,
24356            value: *mut windows_core::BOOL,
24357        ) -> windows_core::HRESULT {
24358            unsafe {
24359                let this: &Identity =
24360                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24361                ICoreWebView2Notification_Impl::IsSilent(this, core::mem::transmute_copy(&value))
24362                    .into()
24363            }
24364        }
24365        unsafe extern "system" fn Timestamp<
24366            Identity: ICoreWebView2Notification_Impl,
24367            const OFFSET: isize,
24368        >(
24369            this: *mut core::ffi::c_void,
24370            value: *mut f64,
24371        ) -> windows_core::HRESULT {
24372            unsafe {
24373                let this: &Identity =
24374                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24375                ICoreWebView2Notification_Impl::Timestamp(this, core::mem::transmute_copy(&value))
24376                    .into()
24377            }
24378        }
24379        unsafe extern "system" fn GetVibrationPattern<
24380            Identity: ICoreWebView2Notification_Impl,
24381            const OFFSET: isize,
24382        >(
24383            this: *mut core::ffi::c_void,
24384            count: *mut u32,
24385            vibrationpattern: *mut *mut u64,
24386        ) -> windows_core::HRESULT {
24387            unsafe {
24388                let this: &Identity =
24389                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24390                ICoreWebView2Notification_Impl::GetVibrationPattern(
24391                    this,
24392                    core::mem::transmute_copy(&count),
24393                    core::mem::transmute_copy(&vibrationpattern),
24394                )
24395                .into()
24396            }
24397        }
24398        Self {
24399            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24400            add_CloseRequested: add_CloseRequested::<Identity, OFFSET>,
24401            remove_CloseRequested: remove_CloseRequested::<Identity, OFFSET>,
24402            ReportShown: ReportShown::<Identity, OFFSET>,
24403            ReportClicked: ReportClicked::<Identity, OFFSET>,
24404            ReportClosed: ReportClosed::<Identity, OFFSET>,
24405            Body: Body::<Identity, OFFSET>,
24406            Direction: Direction::<Identity, OFFSET>,
24407            Language: Language::<Identity, OFFSET>,
24408            Tag: Tag::<Identity, OFFSET>,
24409            IconUri: IconUri::<Identity, OFFSET>,
24410            Title: Title::<Identity, OFFSET>,
24411            BadgeUri: BadgeUri::<Identity, OFFSET>,
24412            BodyImageUri: BodyImageUri::<Identity, OFFSET>,
24413            ShouldRenotify: ShouldRenotify::<Identity, OFFSET>,
24414            RequiresInteraction: RequiresInteraction::<Identity, OFFSET>,
24415            IsSilent: IsSilent::<Identity, OFFSET>,
24416            Timestamp: Timestamp::<Identity, OFFSET>,
24417            GetVibrationPattern: GetVibrationPattern::<Identity, OFFSET>,
24418        }
24419    }
24420    pub fn matches(iid: &windows_core::GUID) -> bool {
24421        iid == &<ICoreWebView2Notification as windows_core::Interface>::IID
24422    }
24423}
24424impl windows_core::RuntimeName for ICoreWebView2Notification {}
24425windows_core::imp::define_interface!(
24426    ICoreWebView2NotificationCloseRequestedEventHandler,
24427    ICoreWebView2NotificationCloseRequestedEventHandler_Vtbl,
24428    0x47c32d23_1e94_4733_85f1_d9bf4acd0974
24429);
24430windows_core::imp::interface_hierarchy!(
24431    ICoreWebView2NotificationCloseRequestedEventHandler,
24432    windows_core::IUnknown
24433);
24434impl ICoreWebView2NotificationCloseRequestedEventHandler {
24435    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
24436    where
24437        P0: windows_core::Param<ICoreWebView2Notification>,
24438        P1: windows_core::Param<windows_core::IUnknown>,
24439    {
24440        unsafe {
24441            (windows_core::Interface::vtable(self).Invoke)(
24442                windows_core::Interface::as_raw(self),
24443                sender.param().abi(),
24444                args.param().abi(),
24445            )
24446            .ok()
24447        }
24448    }
24449}
24450#[repr(C)]
24451#[doc(hidden)]
24452pub struct ICoreWebView2NotificationCloseRequestedEventHandler_Vtbl {
24453    pub base__: windows_core::IUnknown_Vtbl,
24454    pub Invoke: unsafe extern "system" fn(
24455        *mut core::ffi::c_void,
24456        *mut core::ffi::c_void,
24457        *mut core::ffi::c_void,
24458    ) -> windows_core::HRESULT,
24459}
24460pub trait ICoreWebView2NotificationCloseRequestedEventHandler_Impl:
24461    windows_core::IUnknownImpl
24462{
24463    fn Invoke(
24464        &self,
24465        sender: windows_core::Ref<'_, ICoreWebView2Notification>,
24466        args: windows_core::Ref<'_, windows_core::IUnknown>,
24467    ) -> windows_core::Result<()>;
24468}
24469impl ICoreWebView2NotificationCloseRequestedEventHandler_Vtbl {
24470    pub const fn new<
24471        Identity: ICoreWebView2NotificationCloseRequestedEventHandler_Impl,
24472        const OFFSET: isize,
24473    >() -> Self {
24474        unsafe extern "system" fn Invoke<
24475            Identity: ICoreWebView2NotificationCloseRequestedEventHandler_Impl,
24476            const OFFSET: isize,
24477        >(
24478            this: *mut core::ffi::c_void,
24479            sender: *mut core::ffi::c_void,
24480            args: *mut core::ffi::c_void,
24481        ) -> windows_core::HRESULT {
24482            unsafe {
24483                let this: &Identity =
24484                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24485                ICoreWebView2NotificationCloseRequestedEventHandler_Impl::Invoke(
24486                    this,
24487                    core::mem::transmute_copy(&sender),
24488                    core::mem::transmute_copy(&args),
24489                )
24490                .into()
24491            }
24492        }
24493        Self {
24494            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24495            Invoke: Invoke::<Identity, OFFSET>,
24496        }
24497    }
24498    pub fn matches(iid: &windows_core::GUID) -> bool {
24499        iid == & < ICoreWebView2NotificationCloseRequestedEventHandler as windows_core::Interface >::IID
24500    }
24501}
24502impl windows_core::RuntimeName for ICoreWebView2NotificationCloseRequestedEventHandler {}
24503windows_core::imp::define_interface!(
24504    ICoreWebView2NotificationReceivedEventArgs,
24505    ICoreWebView2NotificationReceivedEventArgs_Vtbl,
24506    0x1512dd5b_5514_4f85_886e_21c3a4c9cfe6
24507);
24508windows_core::imp::interface_hierarchy!(
24509    ICoreWebView2NotificationReceivedEventArgs,
24510    windows_core::IUnknown
24511);
24512impl ICoreWebView2NotificationReceivedEventArgs {
24513    pub unsafe fn SenderOrigin(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
24514        unsafe {
24515            (windows_core::Interface::vtable(self).SenderOrigin)(
24516                windows_core::Interface::as_raw(self),
24517                value as _,
24518            )
24519            .ok()
24520        }
24521    }
24522    pub unsafe fn Notification(&self) -> windows_core::Result<ICoreWebView2Notification> {
24523        unsafe {
24524            let mut result__ = core::mem::zeroed();
24525            (windows_core::Interface::vtable(self).Notification)(
24526                windows_core::Interface::as_raw(self),
24527                &mut result__,
24528            )
24529            .and_then(|| windows_core::Type::from_abi(result__))
24530        }
24531    }
24532    pub unsafe fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
24533        unsafe {
24534            (windows_core::Interface::vtable(self).SetHandled)(
24535                windows_core::Interface::as_raw(self),
24536                value.into(),
24537            )
24538            .ok()
24539        }
24540    }
24541    pub unsafe fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
24542        unsafe {
24543            (windows_core::Interface::vtable(self).Handled)(
24544                windows_core::Interface::as_raw(self),
24545                value as _,
24546            )
24547            .ok()
24548        }
24549    }
24550    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
24551        unsafe {
24552            let mut result__ = core::mem::zeroed();
24553            (windows_core::Interface::vtable(self).GetDeferral)(
24554                windows_core::Interface::as_raw(self),
24555                &mut result__,
24556            )
24557            .and_then(|| windows_core::Type::from_abi(result__))
24558        }
24559    }
24560}
24561#[repr(C)]
24562#[doc(hidden)]
24563pub struct ICoreWebView2NotificationReceivedEventArgs_Vtbl {
24564    pub base__: windows_core::IUnknown_Vtbl,
24565    pub SenderOrigin: unsafe extern "system" fn(
24566        *mut core::ffi::c_void,
24567        *mut windows_core::PWSTR,
24568    ) -> windows_core::HRESULT,
24569    pub Notification: unsafe extern "system" fn(
24570        *mut core::ffi::c_void,
24571        *mut *mut core::ffi::c_void,
24572    ) -> windows_core::HRESULT,
24573    pub SetHandled: unsafe extern "system" fn(
24574        *mut core::ffi::c_void,
24575        windows_core::BOOL,
24576    ) -> windows_core::HRESULT,
24577    pub Handled: unsafe extern "system" fn(
24578        *mut core::ffi::c_void,
24579        *mut windows_core::BOOL,
24580    ) -> windows_core::HRESULT,
24581    pub GetDeferral: unsafe extern "system" fn(
24582        *mut core::ffi::c_void,
24583        *mut *mut core::ffi::c_void,
24584    ) -> windows_core::HRESULT,
24585}
24586pub trait ICoreWebView2NotificationReceivedEventArgs_Impl: windows_core::IUnknownImpl {
24587    fn SenderOrigin(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
24588    fn Notification(&self) -> windows_core::Result<ICoreWebView2Notification>;
24589    fn SetHandled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
24590    fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
24591    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
24592}
24593impl ICoreWebView2NotificationReceivedEventArgs_Vtbl {
24594    pub const fn new<
24595        Identity: ICoreWebView2NotificationReceivedEventArgs_Impl,
24596        const OFFSET: isize,
24597    >() -> Self {
24598        unsafe extern "system" fn SenderOrigin<
24599            Identity: ICoreWebView2NotificationReceivedEventArgs_Impl,
24600            const OFFSET: isize,
24601        >(
24602            this: *mut core::ffi::c_void,
24603            value: *mut windows_core::PWSTR,
24604        ) -> windows_core::HRESULT {
24605            unsafe {
24606                let this: &Identity =
24607                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24608                ICoreWebView2NotificationReceivedEventArgs_Impl::SenderOrigin(
24609                    this,
24610                    core::mem::transmute_copy(&value),
24611                )
24612                .into()
24613            }
24614        }
24615        unsafe extern "system" fn Notification<
24616            Identity: ICoreWebView2NotificationReceivedEventArgs_Impl,
24617            const OFFSET: isize,
24618        >(
24619            this: *mut core::ffi::c_void,
24620            value: *mut *mut core::ffi::c_void,
24621        ) -> windows_core::HRESULT {
24622            unsafe {
24623                let this: &Identity =
24624                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24625                match ICoreWebView2NotificationReceivedEventArgs_Impl::Notification(this) {
24626                    Ok(ok__) => {
24627                        value.write(core::mem::transmute(ok__));
24628                        windows_core::HRESULT(0)
24629                    }
24630                    Err(err) => err.into(),
24631                }
24632            }
24633        }
24634        unsafe extern "system" fn SetHandled<
24635            Identity: ICoreWebView2NotificationReceivedEventArgs_Impl,
24636            const OFFSET: isize,
24637        >(
24638            this: *mut core::ffi::c_void,
24639            value: windows_core::BOOL,
24640        ) -> windows_core::HRESULT {
24641            unsafe {
24642                let this: &Identity =
24643                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24644                ICoreWebView2NotificationReceivedEventArgs_Impl::SetHandled(
24645                    this,
24646                    core::mem::transmute_copy(&value),
24647                )
24648                .into()
24649            }
24650        }
24651        unsafe extern "system" fn Handled<
24652            Identity: ICoreWebView2NotificationReceivedEventArgs_Impl,
24653            const OFFSET: isize,
24654        >(
24655            this: *mut core::ffi::c_void,
24656            value: *mut windows_core::BOOL,
24657        ) -> windows_core::HRESULT {
24658            unsafe {
24659                let this: &Identity =
24660                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24661                ICoreWebView2NotificationReceivedEventArgs_Impl::Handled(
24662                    this,
24663                    core::mem::transmute_copy(&value),
24664                )
24665                .into()
24666            }
24667        }
24668        unsafe extern "system" fn GetDeferral<
24669            Identity: ICoreWebView2NotificationReceivedEventArgs_Impl,
24670            const OFFSET: isize,
24671        >(
24672            this: *mut core::ffi::c_void,
24673            deferral: *mut *mut core::ffi::c_void,
24674        ) -> windows_core::HRESULT {
24675            unsafe {
24676                let this: &Identity =
24677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24678                match ICoreWebView2NotificationReceivedEventArgs_Impl::GetDeferral(this) {
24679                    Ok(ok__) => {
24680                        deferral.write(core::mem::transmute(ok__));
24681                        windows_core::HRESULT(0)
24682                    }
24683                    Err(err) => err.into(),
24684                }
24685            }
24686        }
24687        Self {
24688            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24689            SenderOrigin: SenderOrigin::<Identity, OFFSET>,
24690            Notification: Notification::<Identity, OFFSET>,
24691            SetHandled: SetHandled::<Identity, OFFSET>,
24692            Handled: Handled::<Identity, OFFSET>,
24693            GetDeferral: GetDeferral::<Identity, OFFSET>,
24694        }
24695    }
24696    pub fn matches(iid: &windows_core::GUID) -> bool {
24697        iid == &<ICoreWebView2NotificationReceivedEventArgs as windows_core::Interface>::IID
24698    }
24699}
24700impl windows_core::RuntimeName for ICoreWebView2NotificationReceivedEventArgs {}
24701windows_core::imp::define_interface!(
24702    ICoreWebView2NotificationReceivedEventHandler,
24703    ICoreWebView2NotificationReceivedEventHandler_Vtbl,
24704    0x89c5d598_8788_423b_be97_e6e01c0f9ee3
24705);
24706windows_core::imp::interface_hierarchy!(
24707    ICoreWebView2NotificationReceivedEventHandler,
24708    windows_core::IUnknown
24709);
24710impl ICoreWebView2NotificationReceivedEventHandler {
24711    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
24712    where
24713        P0: windows_core::Param<ICoreWebView2>,
24714        P1: windows_core::Param<ICoreWebView2NotificationReceivedEventArgs>,
24715    {
24716        unsafe {
24717            (windows_core::Interface::vtable(self).Invoke)(
24718                windows_core::Interface::as_raw(self),
24719                sender.param().abi(),
24720                args.param().abi(),
24721            )
24722            .ok()
24723        }
24724    }
24725}
24726#[repr(C)]
24727#[doc(hidden)]
24728pub struct ICoreWebView2NotificationReceivedEventHandler_Vtbl {
24729    pub base__: windows_core::IUnknown_Vtbl,
24730    pub Invoke: unsafe extern "system" fn(
24731        *mut core::ffi::c_void,
24732        *mut core::ffi::c_void,
24733        *mut core::ffi::c_void,
24734    ) -> windows_core::HRESULT,
24735}
24736pub trait ICoreWebView2NotificationReceivedEventHandler_Impl: windows_core::IUnknownImpl {
24737    fn Invoke(
24738        &self,
24739        sender: windows_core::Ref<'_, ICoreWebView2>,
24740        args: windows_core::Ref<'_, ICoreWebView2NotificationReceivedEventArgs>,
24741    ) -> windows_core::Result<()>;
24742}
24743impl ICoreWebView2NotificationReceivedEventHandler_Vtbl {
24744    pub const fn new<
24745        Identity: ICoreWebView2NotificationReceivedEventHandler_Impl,
24746        const OFFSET: isize,
24747    >() -> Self {
24748        unsafe extern "system" fn Invoke<
24749            Identity: ICoreWebView2NotificationReceivedEventHandler_Impl,
24750            const OFFSET: isize,
24751        >(
24752            this: *mut core::ffi::c_void,
24753            sender: *mut core::ffi::c_void,
24754            args: *mut core::ffi::c_void,
24755        ) -> windows_core::HRESULT {
24756            unsafe {
24757                let this: &Identity =
24758                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24759                ICoreWebView2NotificationReceivedEventHandler_Impl::Invoke(
24760                    this,
24761                    core::mem::transmute_copy(&sender),
24762                    core::mem::transmute_copy(&args),
24763                )
24764                .into()
24765            }
24766        }
24767        Self {
24768            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24769            Invoke: Invoke::<Identity, OFFSET>,
24770        }
24771    }
24772    pub fn matches(iid: &windows_core::GUID) -> bool {
24773        iid == &<ICoreWebView2NotificationReceivedEventHandler as windows_core::Interface>::IID
24774    }
24775}
24776impl windows_core::RuntimeName for ICoreWebView2NotificationReceivedEventHandler {}
24777windows_core::imp::define_interface!(
24778    ICoreWebView2ObjectCollection,
24779    ICoreWebView2ObjectCollection_Vtbl,
24780    0x5cfec11c_25bd_4e8d_9e1a_7acdaeeec047
24781);
24782impl core::ops::Deref for ICoreWebView2ObjectCollection {
24783    type Target = ICoreWebView2ObjectCollectionView;
24784    fn deref(&self) -> &Self::Target {
24785        unsafe { core::mem::transmute(self) }
24786    }
24787}
24788windows_core::imp::interface_hierarchy!(
24789    ICoreWebView2ObjectCollection,
24790    windows_core::IUnknown,
24791    ICoreWebView2ObjectCollectionView
24792);
24793impl ICoreWebView2ObjectCollection {
24794    pub unsafe fn RemoveValueAtIndex(&self, index: u32) -> windows_core::Result<()> {
24795        unsafe {
24796            (windows_core::Interface::vtable(self).RemoveValueAtIndex)(
24797                windows_core::Interface::as_raw(self),
24798                index,
24799            )
24800            .ok()
24801        }
24802    }
24803    pub unsafe fn InsertValueAtIndex<P1>(&self, index: u32, value: P1) -> windows_core::Result<()>
24804    where
24805        P1: windows_core::Param<windows_core::IUnknown>,
24806    {
24807        unsafe {
24808            (windows_core::Interface::vtable(self).InsertValueAtIndex)(
24809                windows_core::Interface::as_raw(self),
24810                index,
24811                value.param().abi(),
24812            )
24813            .ok()
24814        }
24815    }
24816}
24817#[repr(C)]
24818#[doc(hidden)]
24819pub struct ICoreWebView2ObjectCollection_Vtbl {
24820    pub base__: ICoreWebView2ObjectCollectionView_Vtbl,
24821    pub RemoveValueAtIndex:
24822        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
24823    pub InsertValueAtIndex: unsafe extern "system" fn(
24824        *mut core::ffi::c_void,
24825        u32,
24826        *mut core::ffi::c_void,
24827    ) -> windows_core::HRESULT,
24828}
24829pub trait ICoreWebView2ObjectCollection_Impl: ICoreWebView2ObjectCollectionView_Impl {
24830    fn RemoveValueAtIndex(&self, index: u32) -> windows_core::Result<()>;
24831    fn InsertValueAtIndex(
24832        &self,
24833        index: u32,
24834        value: windows_core::Ref<'_, windows_core::IUnknown>,
24835    ) -> windows_core::Result<()>;
24836}
24837impl ICoreWebView2ObjectCollection_Vtbl {
24838    pub const fn new<Identity: ICoreWebView2ObjectCollection_Impl, const OFFSET: isize>() -> Self {
24839        unsafe extern "system" fn RemoveValueAtIndex<
24840            Identity: ICoreWebView2ObjectCollection_Impl,
24841            const OFFSET: isize,
24842        >(
24843            this: *mut core::ffi::c_void,
24844            index: u32,
24845        ) -> windows_core::HRESULT {
24846            unsafe {
24847                let this: &Identity =
24848                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24849                ICoreWebView2ObjectCollection_Impl::RemoveValueAtIndex(
24850                    this,
24851                    core::mem::transmute_copy(&index),
24852                )
24853                .into()
24854            }
24855        }
24856        unsafe extern "system" fn InsertValueAtIndex<
24857            Identity: ICoreWebView2ObjectCollection_Impl,
24858            const OFFSET: isize,
24859        >(
24860            this: *mut core::ffi::c_void,
24861            index: u32,
24862            value: *mut core::ffi::c_void,
24863        ) -> windows_core::HRESULT {
24864            unsafe {
24865                let this: &Identity =
24866                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24867                ICoreWebView2ObjectCollection_Impl::InsertValueAtIndex(
24868                    this,
24869                    core::mem::transmute_copy(&index),
24870                    core::mem::transmute_copy(&value),
24871                )
24872                .into()
24873            }
24874        }
24875        Self {
24876            base__: ICoreWebView2ObjectCollectionView_Vtbl::new::<Identity, OFFSET>(),
24877            RemoveValueAtIndex: RemoveValueAtIndex::<Identity, OFFSET>,
24878            InsertValueAtIndex: InsertValueAtIndex::<Identity, OFFSET>,
24879        }
24880    }
24881    pub fn matches(iid: &windows_core::GUID) -> bool {
24882        iid == &<ICoreWebView2ObjectCollection as windows_core::Interface>::IID
24883            || iid == &<ICoreWebView2ObjectCollectionView as windows_core::Interface>::IID
24884    }
24885}
24886impl windows_core::RuntimeName for ICoreWebView2ObjectCollection {}
24887windows_core::imp::define_interface!(
24888    ICoreWebView2ObjectCollectionView,
24889    ICoreWebView2ObjectCollectionView_Vtbl,
24890    0x0f36fd87_4f69_4415_98da_888f89fb9a33
24891);
24892windows_core::imp::interface_hierarchy!(ICoreWebView2ObjectCollectionView, windows_core::IUnknown);
24893impl ICoreWebView2ObjectCollectionView {
24894    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
24895        unsafe {
24896            (windows_core::Interface::vtable(self).Count)(
24897                windows_core::Interface::as_raw(self),
24898                value as _,
24899            )
24900            .ok()
24901        }
24902    }
24903    pub unsafe fn GetValueAtIndex(
24904        &self,
24905        index: u32,
24906    ) -> windows_core::Result<windows_core::IUnknown> {
24907        unsafe {
24908            let mut result__ = core::mem::zeroed();
24909            (windows_core::Interface::vtable(self).GetValueAtIndex)(
24910                windows_core::Interface::as_raw(self),
24911                index,
24912                &mut result__,
24913            )
24914            .and_then(|| windows_core::Type::from_abi(result__))
24915        }
24916    }
24917}
24918#[repr(C)]
24919#[doc(hidden)]
24920pub struct ICoreWebView2ObjectCollectionView_Vtbl {
24921    pub base__: windows_core::IUnknown_Vtbl,
24922    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
24923    pub GetValueAtIndex: unsafe extern "system" fn(
24924        *mut core::ffi::c_void,
24925        u32,
24926        *mut *mut core::ffi::c_void,
24927    ) -> windows_core::HRESULT,
24928}
24929pub trait ICoreWebView2ObjectCollectionView_Impl: windows_core::IUnknownImpl {
24930    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
24931    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<windows_core::IUnknown>;
24932}
24933impl ICoreWebView2ObjectCollectionView_Vtbl {
24934    pub const fn new<Identity: ICoreWebView2ObjectCollectionView_Impl, const OFFSET: isize>() -> Self
24935    {
24936        unsafe extern "system" fn Count<
24937            Identity: ICoreWebView2ObjectCollectionView_Impl,
24938            const OFFSET: isize,
24939        >(
24940            this: *mut core::ffi::c_void,
24941            value: *mut u32,
24942        ) -> windows_core::HRESULT {
24943            unsafe {
24944                let this: &Identity =
24945                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24946                ICoreWebView2ObjectCollectionView_Impl::Count(
24947                    this,
24948                    core::mem::transmute_copy(&value),
24949                )
24950                .into()
24951            }
24952        }
24953        unsafe extern "system" fn GetValueAtIndex<
24954            Identity: ICoreWebView2ObjectCollectionView_Impl,
24955            const OFFSET: isize,
24956        >(
24957            this: *mut core::ffi::c_void,
24958            index: u32,
24959            value: *mut *mut core::ffi::c_void,
24960        ) -> windows_core::HRESULT {
24961            unsafe {
24962                let this: &Identity =
24963                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24964                match ICoreWebView2ObjectCollectionView_Impl::GetValueAtIndex(
24965                    this,
24966                    core::mem::transmute_copy(&index),
24967                ) {
24968                    Ok(ok__) => {
24969                        value.write(core::mem::transmute(ok__));
24970                        windows_core::HRESULT(0)
24971                    }
24972                    Err(err) => err.into(),
24973                }
24974            }
24975        }
24976        Self {
24977            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24978            Count: Count::<Identity, OFFSET>,
24979            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
24980        }
24981    }
24982    pub fn matches(iid: &windows_core::GUID) -> bool {
24983        iid == &<ICoreWebView2ObjectCollectionView as windows_core::Interface>::IID
24984    }
24985}
24986impl windows_core::RuntimeName for ICoreWebView2ObjectCollectionView {}
24987windows_core::imp::define_interface!(
24988    ICoreWebView2PermissionRequestedEventArgs,
24989    ICoreWebView2PermissionRequestedEventArgs_Vtbl,
24990    0x973ae2ef_ff18_4894_8fb2_3c758f046810
24991);
24992windows_core::imp::interface_hierarchy!(
24993    ICoreWebView2PermissionRequestedEventArgs,
24994    windows_core::IUnknown
24995);
24996impl ICoreWebView2PermissionRequestedEventArgs {
24997    pub unsafe fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
24998        unsafe {
24999            (windows_core::Interface::vtable(self).Uri)(
25000                windows_core::Interface::as_raw(self),
25001                uri as _,
25002            )
25003            .ok()
25004        }
25005    }
25006    pub unsafe fn PermissionKind(
25007        &self,
25008        permissionkind: *mut COREWEBVIEW2_PERMISSION_KIND,
25009    ) -> windows_core::Result<()> {
25010        unsafe {
25011            (windows_core::Interface::vtable(self).PermissionKind)(
25012                windows_core::Interface::as_raw(self),
25013                permissionkind as _,
25014            )
25015            .ok()
25016        }
25017    }
25018    pub unsafe fn IsUserInitiated(
25019        &self,
25020        isuserinitiated: *mut windows_core::BOOL,
25021    ) -> windows_core::Result<()> {
25022        unsafe {
25023            (windows_core::Interface::vtable(self).IsUserInitiated)(
25024                windows_core::Interface::as_raw(self),
25025                isuserinitiated as _,
25026            )
25027            .ok()
25028        }
25029    }
25030    pub unsafe fn State(
25031        &self,
25032        state: *mut COREWEBVIEW2_PERMISSION_STATE,
25033    ) -> windows_core::Result<()> {
25034        unsafe {
25035            (windows_core::Interface::vtable(self).State)(
25036                windows_core::Interface::as_raw(self),
25037                state as _,
25038            )
25039            .ok()
25040        }
25041    }
25042    pub unsafe fn SetState(
25043        &self,
25044        state: COREWEBVIEW2_PERMISSION_STATE,
25045    ) -> windows_core::Result<()> {
25046        unsafe {
25047            (windows_core::Interface::vtable(self).SetState)(
25048                windows_core::Interface::as_raw(self),
25049                state,
25050            )
25051            .ok()
25052        }
25053    }
25054    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
25055        unsafe {
25056            let mut result__ = core::mem::zeroed();
25057            (windows_core::Interface::vtable(self).GetDeferral)(
25058                windows_core::Interface::as_raw(self),
25059                &mut result__,
25060            )
25061            .and_then(|| windows_core::Type::from_abi(result__))
25062        }
25063    }
25064}
25065#[repr(C)]
25066#[doc(hidden)]
25067pub struct ICoreWebView2PermissionRequestedEventArgs_Vtbl {
25068    pub base__: windows_core::IUnknown_Vtbl,
25069    pub Uri: unsafe extern "system" fn(
25070        *mut core::ffi::c_void,
25071        *mut windows_core::PWSTR,
25072    ) -> windows_core::HRESULT,
25073    pub PermissionKind: unsafe extern "system" fn(
25074        *mut core::ffi::c_void,
25075        *mut COREWEBVIEW2_PERMISSION_KIND,
25076    ) -> windows_core::HRESULT,
25077    pub IsUserInitiated: unsafe extern "system" fn(
25078        *mut core::ffi::c_void,
25079        *mut windows_core::BOOL,
25080    ) -> windows_core::HRESULT,
25081    pub State: unsafe extern "system" fn(
25082        *mut core::ffi::c_void,
25083        *mut COREWEBVIEW2_PERMISSION_STATE,
25084    ) -> windows_core::HRESULT,
25085    pub SetState: unsafe extern "system" fn(
25086        *mut core::ffi::c_void,
25087        COREWEBVIEW2_PERMISSION_STATE,
25088    ) -> windows_core::HRESULT,
25089    pub GetDeferral: unsafe extern "system" fn(
25090        *mut core::ffi::c_void,
25091        *mut *mut core::ffi::c_void,
25092    ) -> windows_core::HRESULT,
25093}
25094pub trait ICoreWebView2PermissionRequestedEventArgs_Impl: windows_core::IUnknownImpl {
25095    fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
25096    fn PermissionKind(
25097        &self,
25098        permissionkind: *mut COREWEBVIEW2_PERMISSION_KIND,
25099    ) -> windows_core::Result<()>;
25100    fn IsUserInitiated(&self, isuserinitiated: *mut windows_core::BOOL)
25101        -> windows_core::Result<()>;
25102    fn State(&self, state: *mut COREWEBVIEW2_PERMISSION_STATE) -> windows_core::Result<()>;
25103    fn SetState(&self, state: COREWEBVIEW2_PERMISSION_STATE) -> windows_core::Result<()>;
25104    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
25105}
25106impl ICoreWebView2PermissionRequestedEventArgs_Vtbl {
25107    pub const fn new<
25108        Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25109        const OFFSET: isize,
25110    >() -> Self {
25111        unsafe extern "system" fn Uri<
25112            Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25113            const OFFSET: isize,
25114        >(
25115            this: *mut core::ffi::c_void,
25116            uri: *mut windows_core::PWSTR,
25117        ) -> windows_core::HRESULT {
25118            unsafe {
25119                let this: &Identity =
25120                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25121                ICoreWebView2PermissionRequestedEventArgs_Impl::Uri(
25122                    this,
25123                    core::mem::transmute_copy(&uri),
25124                )
25125                .into()
25126            }
25127        }
25128        unsafe extern "system" fn PermissionKind<
25129            Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25130            const OFFSET: isize,
25131        >(
25132            this: *mut core::ffi::c_void,
25133            permissionkind: *mut COREWEBVIEW2_PERMISSION_KIND,
25134        ) -> windows_core::HRESULT {
25135            unsafe {
25136                let this: &Identity =
25137                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25138                ICoreWebView2PermissionRequestedEventArgs_Impl::PermissionKind(
25139                    this,
25140                    core::mem::transmute_copy(&permissionkind),
25141                )
25142                .into()
25143            }
25144        }
25145        unsafe extern "system" fn IsUserInitiated<
25146            Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25147            const OFFSET: isize,
25148        >(
25149            this: *mut core::ffi::c_void,
25150            isuserinitiated: *mut windows_core::BOOL,
25151        ) -> windows_core::HRESULT {
25152            unsafe {
25153                let this: &Identity =
25154                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25155                ICoreWebView2PermissionRequestedEventArgs_Impl::IsUserInitiated(
25156                    this,
25157                    core::mem::transmute_copy(&isuserinitiated),
25158                )
25159                .into()
25160            }
25161        }
25162        unsafe extern "system" fn State<
25163            Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25164            const OFFSET: isize,
25165        >(
25166            this: *mut core::ffi::c_void,
25167            state: *mut COREWEBVIEW2_PERMISSION_STATE,
25168        ) -> windows_core::HRESULT {
25169            unsafe {
25170                let this: &Identity =
25171                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25172                ICoreWebView2PermissionRequestedEventArgs_Impl::State(
25173                    this,
25174                    core::mem::transmute_copy(&state),
25175                )
25176                .into()
25177            }
25178        }
25179        unsafe extern "system" fn SetState<
25180            Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25181            const OFFSET: isize,
25182        >(
25183            this: *mut core::ffi::c_void,
25184            state: COREWEBVIEW2_PERMISSION_STATE,
25185        ) -> windows_core::HRESULT {
25186            unsafe {
25187                let this: &Identity =
25188                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25189                ICoreWebView2PermissionRequestedEventArgs_Impl::SetState(
25190                    this,
25191                    core::mem::transmute_copy(&state),
25192                )
25193                .into()
25194            }
25195        }
25196        unsafe extern "system" fn GetDeferral<
25197            Identity: ICoreWebView2PermissionRequestedEventArgs_Impl,
25198            const OFFSET: isize,
25199        >(
25200            this: *mut core::ffi::c_void,
25201            deferral: *mut *mut core::ffi::c_void,
25202        ) -> windows_core::HRESULT {
25203            unsafe {
25204                let this: &Identity =
25205                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25206                match ICoreWebView2PermissionRequestedEventArgs_Impl::GetDeferral(this) {
25207                    Ok(ok__) => {
25208                        deferral.write(core::mem::transmute(ok__));
25209                        windows_core::HRESULT(0)
25210                    }
25211                    Err(err) => err.into(),
25212                }
25213            }
25214        }
25215        Self {
25216            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25217            Uri: Uri::<Identity, OFFSET>,
25218            PermissionKind: PermissionKind::<Identity, OFFSET>,
25219            IsUserInitiated: IsUserInitiated::<Identity, OFFSET>,
25220            State: State::<Identity, OFFSET>,
25221            SetState: SetState::<Identity, OFFSET>,
25222            GetDeferral: GetDeferral::<Identity, OFFSET>,
25223        }
25224    }
25225    pub fn matches(iid: &windows_core::GUID) -> bool {
25226        iid == &<ICoreWebView2PermissionRequestedEventArgs as windows_core::Interface>::IID
25227    }
25228}
25229impl windows_core::RuntimeName for ICoreWebView2PermissionRequestedEventArgs {}
25230windows_core::imp::define_interface!(
25231    ICoreWebView2PermissionRequestedEventArgs2,
25232    ICoreWebView2PermissionRequestedEventArgs2_Vtbl,
25233    0x74d7127f_9de6_4200_8734_42d6fb4ff741
25234);
25235impl core::ops::Deref for ICoreWebView2PermissionRequestedEventArgs2 {
25236    type Target = ICoreWebView2PermissionRequestedEventArgs;
25237    fn deref(&self) -> &Self::Target {
25238        unsafe { core::mem::transmute(self) }
25239    }
25240}
25241windows_core::imp::interface_hierarchy!(
25242    ICoreWebView2PermissionRequestedEventArgs2,
25243    windows_core::IUnknown,
25244    ICoreWebView2PermissionRequestedEventArgs
25245);
25246impl ICoreWebView2PermissionRequestedEventArgs2 {
25247    pub unsafe fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
25248        unsafe {
25249            (windows_core::Interface::vtable(self).Handled)(
25250                windows_core::Interface::as_raw(self),
25251                value as _,
25252            )
25253            .ok()
25254        }
25255    }
25256    pub unsafe fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
25257        unsafe {
25258            (windows_core::Interface::vtable(self).SetHandled)(
25259                windows_core::Interface::as_raw(self),
25260                value.into(),
25261            )
25262            .ok()
25263        }
25264    }
25265}
25266#[repr(C)]
25267#[doc(hidden)]
25268pub struct ICoreWebView2PermissionRequestedEventArgs2_Vtbl {
25269    pub base__: ICoreWebView2PermissionRequestedEventArgs_Vtbl,
25270    pub Handled: unsafe extern "system" fn(
25271        *mut core::ffi::c_void,
25272        *mut windows_core::BOOL,
25273    ) -> windows_core::HRESULT,
25274    pub SetHandled: unsafe extern "system" fn(
25275        *mut core::ffi::c_void,
25276        windows_core::BOOL,
25277    ) -> windows_core::HRESULT,
25278}
25279pub trait ICoreWebView2PermissionRequestedEventArgs2_Impl:
25280    ICoreWebView2PermissionRequestedEventArgs_Impl
25281{
25282    fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
25283    fn SetHandled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
25284}
25285impl ICoreWebView2PermissionRequestedEventArgs2_Vtbl {
25286    pub const fn new<
25287        Identity: ICoreWebView2PermissionRequestedEventArgs2_Impl,
25288        const OFFSET: isize,
25289    >() -> Self {
25290        unsafe extern "system" fn Handled<
25291            Identity: ICoreWebView2PermissionRequestedEventArgs2_Impl,
25292            const OFFSET: isize,
25293        >(
25294            this: *mut core::ffi::c_void,
25295            value: *mut windows_core::BOOL,
25296        ) -> windows_core::HRESULT {
25297            unsafe {
25298                let this: &Identity =
25299                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25300                ICoreWebView2PermissionRequestedEventArgs2_Impl::Handled(
25301                    this,
25302                    core::mem::transmute_copy(&value),
25303                )
25304                .into()
25305            }
25306        }
25307        unsafe extern "system" fn SetHandled<
25308            Identity: ICoreWebView2PermissionRequestedEventArgs2_Impl,
25309            const OFFSET: isize,
25310        >(
25311            this: *mut core::ffi::c_void,
25312            value: windows_core::BOOL,
25313        ) -> windows_core::HRESULT {
25314            unsafe {
25315                let this: &Identity =
25316                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25317                ICoreWebView2PermissionRequestedEventArgs2_Impl::SetHandled(
25318                    this,
25319                    core::mem::transmute_copy(&value),
25320                )
25321                .into()
25322            }
25323        }
25324        Self {
25325            base__: ICoreWebView2PermissionRequestedEventArgs_Vtbl::new::<Identity, OFFSET>(),
25326            Handled: Handled::<Identity, OFFSET>,
25327            SetHandled: SetHandled::<Identity, OFFSET>,
25328        }
25329    }
25330    pub fn matches(iid: &windows_core::GUID) -> bool {
25331        iid == &<ICoreWebView2PermissionRequestedEventArgs2 as windows_core::Interface>::IID
25332            || iid == &<ICoreWebView2PermissionRequestedEventArgs as windows_core::Interface>::IID
25333    }
25334}
25335impl windows_core::RuntimeName for ICoreWebView2PermissionRequestedEventArgs2 {}
25336windows_core::imp::define_interface!(
25337    ICoreWebView2PermissionRequestedEventArgs3,
25338    ICoreWebView2PermissionRequestedEventArgs3_Vtbl,
25339    0xe61670bc_3dce_4177_86d2_c629ae3cb6ac
25340);
25341impl core::ops::Deref for ICoreWebView2PermissionRequestedEventArgs3 {
25342    type Target = ICoreWebView2PermissionRequestedEventArgs2;
25343    fn deref(&self) -> &Self::Target {
25344        unsafe { core::mem::transmute(self) }
25345    }
25346}
25347windows_core::imp::interface_hierarchy!(
25348    ICoreWebView2PermissionRequestedEventArgs3,
25349    windows_core::IUnknown,
25350    ICoreWebView2PermissionRequestedEventArgs,
25351    ICoreWebView2PermissionRequestedEventArgs2
25352);
25353impl ICoreWebView2PermissionRequestedEventArgs3 {
25354    pub unsafe fn SavesInProfile(
25355        &self,
25356        value: *mut windows_core::BOOL,
25357    ) -> windows_core::Result<()> {
25358        unsafe {
25359            (windows_core::Interface::vtable(self).SavesInProfile)(
25360                windows_core::Interface::as_raw(self),
25361                value as _,
25362            )
25363            .ok()
25364        }
25365    }
25366    pub unsafe fn SetSavesInProfile(&self, value: bool) -> windows_core::Result<()> {
25367        unsafe {
25368            (windows_core::Interface::vtable(self).SetSavesInProfile)(
25369                windows_core::Interface::as_raw(self),
25370                value.into(),
25371            )
25372            .ok()
25373        }
25374    }
25375}
25376#[repr(C)]
25377#[doc(hidden)]
25378pub struct ICoreWebView2PermissionRequestedEventArgs3_Vtbl {
25379    pub base__: ICoreWebView2PermissionRequestedEventArgs2_Vtbl,
25380    pub SavesInProfile: unsafe extern "system" fn(
25381        *mut core::ffi::c_void,
25382        *mut windows_core::BOOL,
25383    ) -> windows_core::HRESULT,
25384    pub SetSavesInProfile: unsafe extern "system" fn(
25385        *mut core::ffi::c_void,
25386        windows_core::BOOL,
25387    ) -> windows_core::HRESULT,
25388}
25389pub trait ICoreWebView2PermissionRequestedEventArgs3_Impl:
25390    ICoreWebView2PermissionRequestedEventArgs2_Impl
25391{
25392    fn SavesInProfile(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
25393    fn SetSavesInProfile(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
25394}
25395impl ICoreWebView2PermissionRequestedEventArgs3_Vtbl {
25396    pub const fn new<
25397        Identity: ICoreWebView2PermissionRequestedEventArgs3_Impl,
25398        const OFFSET: isize,
25399    >() -> Self {
25400        unsafe extern "system" fn SavesInProfile<
25401            Identity: ICoreWebView2PermissionRequestedEventArgs3_Impl,
25402            const OFFSET: isize,
25403        >(
25404            this: *mut core::ffi::c_void,
25405            value: *mut windows_core::BOOL,
25406        ) -> windows_core::HRESULT {
25407            unsafe {
25408                let this: &Identity =
25409                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25410                ICoreWebView2PermissionRequestedEventArgs3_Impl::SavesInProfile(
25411                    this,
25412                    core::mem::transmute_copy(&value),
25413                )
25414                .into()
25415            }
25416        }
25417        unsafe extern "system" fn SetSavesInProfile<
25418            Identity: ICoreWebView2PermissionRequestedEventArgs3_Impl,
25419            const OFFSET: isize,
25420        >(
25421            this: *mut core::ffi::c_void,
25422            value: windows_core::BOOL,
25423        ) -> windows_core::HRESULT {
25424            unsafe {
25425                let this: &Identity =
25426                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25427                ICoreWebView2PermissionRequestedEventArgs3_Impl::SetSavesInProfile(
25428                    this,
25429                    core::mem::transmute_copy(&value),
25430                )
25431                .into()
25432            }
25433        }
25434        Self {
25435            base__: ICoreWebView2PermissionRequestedEventArgs2_Vtbl::new::<Identity, OFFSET>(),
25436            SavesInProfile: SavesInProfile::<Identity, OFFSET>,
25437            SetSavesInProfile: SetSavesInProfile::<Identity, OFFSET>,
25438        }
25439    }
25440    pub fn matches(iid: &windows_core::GUID) -> bool {
25441        iid == &<ICoreWebView2PermissionRequestedEventArgs3 as windows_core::Interface>::IID
25442            || iid == &<ICoreWebView2PermissionRequestedEventArgs as windows_core::Interface>::IID
25443            || iid == &<ICoreWebView2PermissionRequestedEventArgs2 as windows_core::Interface>::IID
25444    }
25445}
25446impl windows_core::RuntimeName for ICoreWebView2PermissionRequestedEventArgs3 {}
25447windows_core::imp::define_interface!(
25448    ICoreWebView2PermissionRequestedEventHandler,
25449    ICoreWebView2PermissionRequestedEventHandler_Vtbl,
25450    0x15e1c6a3_c72a_4df3_91d7_d097fbec6bfd
25451);
25452windows_core::imp::interface_hierarchy!(
25453    ICoreWebView2PermissionRequestedEventHandler,
25454    windows_core::IUnknown
25455);
25456impl ICoreWebView2PermissionRequestedEventHandler {
25457    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
25458    where
25459        P0: windows_core::Param<ICoreWebView2>,
25460        P1: windows_core::Param<ICoreWebView2PermissionRequestedEventArgs>,
25461    {
25462        unsafe {
25463            (windows_core::Interface::vtable(self).Invoke)(
25464                windows_core::Interface::as_raw(self),
25465                sender.param().abi(),
25466                args.param().abi(),
25467            )
25468            .ok()
25469        }
25470    }
25471}
25472#[repr(C)]
25473#[doc(hidden)]
25474pub struct ICoreWebView2PermissionRequestedEventHandler_Vtbl {
25475    pub base__: windows_core::IUnknown_Vtbl,
25476    pub Invoke: unsafe extern "system" fn(
25477        *mut core::ffi::c_void,
25478        *mut core::ffi::c_void,
25479        *mut core::ffi::c_void,
25480    ) -> windows_core::HRESULT,
25481}
25482pub trait ICoreWebView2PermissionRequestedEventHandler_Impl: windows_core::IUnknownImpl {
25483    fn Invoke(
25484        &self,
25485        sender: windows_core::Ref<'_, ICoreWebView2>,
25486        args: windows_core::Ref<'_, ICoreWebView2PermissionRequestedEventArgs>,
25487    ) -> windows_core::Result<()>;
25488}
25489impl ICoreWebView2PermissionRequestedEventHandler_Vtbl {
25490    pub const fn new<
25491        Identity: ICoreWebView2PermissionRequestedEventHandler_Impl,
25492        const OFFSET: isize,
25493    >() -> Self {
25494        unsafe extern "system" fn Invoke<
25495            Identity: ICoreWebView2PermissionRequestedEventHandler_Impl,
25496            const OFFSET: isize,
25497        >(
25498            this: *mut core::ffi::c_void,
25499            sender: *mut core::ffi::c_void,
25500            args: *mut core::ffi::c_void,
25501        ) -> windows_core::HRESULT {
25502            unsafe {
25503                let this: &Identity =
25504                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25505                ICoreWebView2PermissionRequestedEventHandler_Impl::Invoke(
25506                    this,
25507                    core::mem::transmute_copy(&sender),
25508                    core::mem::transmute_copy(&args),
25509                )
25510                .into()
25511            }
25512        }
25513        Self {
25514            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25515            Invoke: Invoke::<Identity, OFFSET>,
25516        }
25517    }
25518    pub fn matches(iid: &windows_core::GUID) -> bool {
25519        iid == &<ICoreWebView2PermissionRequestedEventHandler as windows_core::Interface>::IID
25520    }
25521}
25522impl windows_core::RuntimeName for ICoreWebView2PermissionRequestedEventHandler {}
25523windows_core::imp::define_interface!(
25524    ICoreWebView2PermissionSetting,
25525    ICoreWebView2PermissionSetting_Vtbl,
25526    0x792b6eca_5576_421c_9119_74ebb3a4ffb3
25527);
25528windows_core::imp::interface_hierarchy!(ICoreWebView2PermissionSetting, windows_core::IUnknown);
25529impl ICoreWebView2PermissionSetting {
25530    pub unsafe fn PermissionKind(
25531        &self,
25532        value: *mut COREWEBVIEW2_PERMISSION_KIND,
25533    ) -> windows_core::Result<()> {
25534        unsafe {
25535            (windows_core::Interface::vtable(self).PermissionKind)(
25536                windows_core::Interface::as_raw(self),
25537                value as _,
25538            )
25539            .ok()
25540        }
25541    }
25542    pub unsafe fn PermissionOrigin(
25543        &self,
25544        value: *mut windows_core::PWSTR,
25545    ) -> windows_core::Result<()> {
25546        unsafe {
25547            (windows_core::Interface::vtable(self).PermissionOrigin)(
25548                windows_core::Interface::as_raw(self),
25549                value as _,
25550            )
25551            .ok()
25552        }
25553    }
25554    pub unsafe fn PermissionState(
25555        &self,
25556        value: *mut COREWEBVIEW2_PERMISSION_STATE,
25557    ) -> windows_core::Result<()> {
25558        unsafe {
25559            (windows_core::Interface::vtable(self).PermissionState)(
25560                windows_core::Interface::as_raw(self),
25561                value as _,
25562            )
25563            .ok()
25564        }
25565    }
25566}
25567#[repr(C)]
25568#[doc(hidden)]
25569pub struct ICoreWebView2PermissionSetting_Vtbl {
25570    pub base__: windows_core::IUnknown_Vtbl,
25571    pub PermissionKind: unsafe extern "system" fn(
25572        *mut core::ffi::c_void,
25573        *mut COREWEBVIEW2_PERMISSION_KIND,
25574    ) -> windows_core::HRESULT,
25575    pub PermissionOrigin: unsafe extern "system" fn(
25576        *mut core::ffi::c_void,
25577        *mut windows_core::PWSTR,
25578    ) -> windows_core::HRESULT,
25579    pub PermissionState: unsafe extern "system" fn(
25580        *mut core::ffi::c_void,
25581        *mut COREWEBVIEW2_PERMISSION_STATE,
25582    ) -> windows_core::HRESULT,
25583}
25584pub trait ICoreWebView2PermissionSetting_Impl: windows_core::IUnknownImpl {
25585    fn PermissionKind(&self, value: *mut COREWEBVIEW2_PERMISSION_KIND) -> windows_core::Result<()>;
25586    fn PermissionOrigin(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
25587    fn PermissionState(
25588        &self,
25589        value: *mut COREWEBVIEW2_PERMISSION_STATE,
25590    ) -> windows_core::Result<()>;
25591}
25592impl ICoreWebView2PermissionSetting_Vtbl {
25593    pub const fn new<Identity: ICoreWebView2PermissionSetting_Impl, const OFFSET: isize>() -> Self {
25594        unsafe extern "system" fn PermissionKind<
25595            Identity: ICoreWebView2PermissionSetting_Impl,
25596            const OFFSET: isize,
25597        >(
25598            this: *mut core::ffi::c_void,
25599            value: *mut COREWEBVIEW2_PERMISSION_KIND,
25600        ) -> windows_core::HRESULT {
25601            unsafe {
25602                let this: &Identity =
25603                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25604                ICoreWebView2PermissionSetting_Impl::PermissionKind(
25605                    this,
25606                    core::mem::transmute_copy(&value),
25607                )
25608                .into()
25609            }
25610        }
25611        unsafe extern "system" fn PermissionOrigin<
25612            Identity: ICoreWebView2PermissionSetting_Impl,
25613            const OFFSET: isize,
25614        >(
25615            this: *mut core::ffi::c_void,
25616            value: *mut windows_core::PWSTR,
25617        ) -> windows_core::HRESULT {
25618            unsafe {
25619                let this: &Identity =
25620                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25621                ICoreWebView2PermissionSetting_Impl::PermissionOrigin(
25622                    this,
25623                    core::mem::transmute_copy(&value),
25624                )
25625                .into()
25626            }
25627        }
25628        unsafe extern "system" fn PermissionState<
25629            Identity: ICoreWebView2PermissionSetting_Impl,
25630            const OFFSET: isize,
25631        >(
25632            this: *mut core::ffi::c_void,
25633            value: *mut COREWEBVIEW2_PERMISSION_STATE,
25634        ) -> windows_core::HRESULT {
25635            unsafe {
25636                let this: &Identity =
25637                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25638                ICoreWebView2PermissionSetting_Impl::PermissionState(
25639                    this,
25640                    core::mem::transmute_copy(&value),
25641                )
25642                .into()
25643            }
25644        }
25645        Self {
25646            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25647            PermissionKind: PermissionKind::<Identity, OFFSET>,
25648            PermissionOrigin: PermissionOrigin::<Identity, OFFSET>,
25649            PermissionState: PermissionState::<Identity, OFFSET>,
25650        }
25651    }
25652    pub fn matches(iid: &windows_core::GUID) -> bool {
25653        iid == &<ICoreWebView2PermissionSetting as windows_core::Interface>::IID
25654    }
25655}
25656impl windows_core::RuntimeName for ICoreWebView2PermissionSetting {}
25657windows_core::imp::define_interface!(
25658    ICoreWebView2PermissionSettingCollectionView,
25659    ICoreWebView2PermissionSettingCollectionView_Vtbl,
25660    0xf5596f62_3de5_47b1_91e8_a4104b596b96
25661);
25662windows_core::imp::interface_hierarchy!(
25663    ICoreWebView2PermissionSettingCollectionView,
25664    windows_core::IUnknown
25665);
25666impl ICoreWebView2PermissionSettingCollectionView {
25667    pub unsafe fn GetValueAtIndex(
25668        &self,
25669        index: u32,
25670    ) -> windows_core::Result<ICoreWebView2PermissionSetting> {
25671        unsafe {
25672            let mut result__ = core::mem::zeroed();
25673            (windows_core::Interface::vtable(self).GetValueAtIndex)(
25674                windows_core::Interface::as_raw(self),
25675                index,
25676                &mut result__,
25677            )
25678            .and_then(|| windows_core::Type::from_abi(result__))
25679        }
25680    }
25681    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
25682        unsafe {
25683            (windows_core::Interface::vtable(self).Count)(
25684                windows_core::Interface::as_raw(self),
25685                value as _,
25686            )
25687            .ok()
25688        }
25689    }
25690}
25691#[repr(C)]
25692#[doc(hidden)]
25693pub struct ICoreWebView2PermissionSettingCollectionView_Vtbl {
25694    pub base__: windows_core::IUnknown_Vtbl,
25695    pub GetValueAtIndex: unsafe extern "system" fn(
25696        *mut core::ffi::c_void,
25697        u32,
25698        *mut *mut core::ffi::c_void,
25699    ) -> windows_core::HRESULT,
25700    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
25701}
25702pub trait ICoreWebView2PermissionSettingCollectionView_Impl: windows_core::IUnknownImpl {
25703    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2PermissionSetting>;
25704    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
25705}
25706impl ICoreWebView2PermissionSettingCollectionView_Vtbl {
25707    pub const fn new<
25708        Identity: ICoreWebView2PermissionSettingCollectionView_Impl,
25709        const OFFSET: isize,
25710    >() -> Self {
25711        unsafe extern "system" fn GetValueAtIndex<
25712            Identity: ICoreWebView2PermissionSettingCollectionView_Impl,
25713            const OFFSET: isize,
25714        >(
25715            this: *mut core::ffi::c_void,
25716            index: u32,
25717            permissionsetting: *mut *mut core::ffi::c_void,
25718        ) -> windows_core::HRESULT {
25719            unsafe {
25720                let this: &Identity =
25721                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25722                match ICoreWebView2PermissionSettingCollectionView_Impl::GetValueAtIndex(
25723                    this,
25724                    core::mem::transmute_copy(&index),
25725                ) {
25726                    Ok(ok__) => {
25727                        permissionsetting.write(core::mem::transmute(ok__));
25728                        windows_core::HRESULT(0)
25729                    }
25730                    Err(err) => err.into(),
25731                }
25732            }
25733        }
25734        unsafe extern "system" fn Count<
25735            Identity: ICoreWebView2PermissionSettingCollectionView_Impl,
25736            const OFFSET: isize,
25737        >(
25738            this: *mut core::ffi::c_void,
25739            value: *mut u32,
25740        ) -> windows_core::HRESULT {
25741            unsafe {
25742                let this: &Identity =
25743                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25744                ICoreWebView2PermissionSettingCollectionView_Impl::Count(
25745                    this,
25746                    core::mem::transmute_copy(&value),
25747                )
25748                .into()
25749            }
25750        }
25751        Self {
25752            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25753            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
25754            Count: Count::<Identity, OFFSET>,
25755        }
25756    }
25757    pub fn matches(iid: &windows_core::GUID) -> bool {
25758        iid == &<ICoreWebView2PermissionSettingCollectionView as windows_core::Interface>::IID
25759    }
25760}
25761impl windows_core::RuntimeName for ICoreWebView2PermissionSettingCollectionView {}
25762windows_core::imp::define_interface!(
25763    ICoreWebView2PointerInfo,
25764    ICoreWebView2PointerInfo_Vtbl,
25765    0xe6995887_d10d_4f5d_9359_4ce46e4f96b9
25766);
25767windows_core::imp::interface_hierarchy!(ICoreWebView2PointerInfo, windows_core::IUnknown);
25768impl ICoreWebView2PointerInfo {
25769    pub unsafe fn PointerKind(&self, pointerkind: *mut u32) -> windows_core::Result<()> {
25770        unsafe {
25771            (windows_core::Interface::vtable(self).PointerKind)(
25772                windows_core::Interface::as_raw(self),
25773                pointerkind as _,
25774            )
25775            .ok()
25776        }
25777    }
25778    pub unsafe fn SetPointerKind(&self, pointerkind: u32) -> windows_core::Result<()> {
25779        unsafe {
25780            (windows_core::Interface::vtable(self).SetPointerKind)(
25781                windows_core::Interface::as_raw(self),
25782                pointerkind,
25783            )
25784            .ok()
25785        }
25786    }
25787    pub unsafe fn PointerId(&self, pointerid: *mut u32) -> windows_core::Result<()> {
25788        unsafe {
25789            (windows_core::Interface::vtable(self).PointerId)(
25790                windows_core::Interface::as_raw(self),
25791                pointerid as _,
25792            )
25793            .ok()
25794        }
25795    }
25796    pub unsafe fn SetPointerId(&self, pointerid: u32) -> windows_core::Result<()> {
25797        unsafe {
25798            (windows_core::Interface::vtable(self).SetPointerId)(
25799                windows_core::Interface::as_raw(self),
25800                pointerid,
25801            )
25802            .ok()
25803        }
25804    }
25805    pub unsafe fn FrameId(&self, frameid: *mut u32) -> windows_core::Result<()> {
25806        unsafe {
25807            (windows_core::Interface::vtable(self).FrameId)(
25808                windows_core::Interface::as_raw(self),
25809                frameid as _,
25810            )
25811            .ok()
25812        }
25813    }
25814    pub unsafe fn SetFrameId(&self, frameid: u32) -> windows_core::Result<()> {
25815        unsafe {
25816            (windows_core::Interface::vtable(self).SetFrameId)(
25817                windows_core::Interface::as_raw(self),
25818                frameid,
25819            )
25820            .ok()
25821        }
25822    }
25823    pub unsafe fn PointerFlags(&self, pointerflags: *mut u32) -> windows_core::Result<()> {
25824        unsafe {
25825            (windows_core::Interface::vtable(self).PointerFlags)(
25826                windows_core::Interface::as_raw(self),
25827                pointerflags as _,
25828            )
25829            .ok()
25830        }
25831    }
25832    pub unsafe fn SetPointerFlags(&self, pointerflags: u32) -> windows_core::Result<()> {
25833        unsafe {
25834            (windows_core::Interface::vtable(self).SetPointerFlags)(
25835                windows_core::Interface::as_raw(self),
25836                pointerflags,
25837            )
25838            .ok()
25839        }
25840    }
25841    pub unsafe fn PointerDeviceRect(
25842        &self,
25843        pointerdevicerect: *mut windows::Win32::Foundation::RECT,
25844    ) -> windows_core::Result<()> {
25845        unsafe {
25846            (windows_core::Interface::vtable(self).PointerDeviceRect)(
25847                windows_core::Interface::as_raw(self),
25848                pointerdevicerect as _,
25849            )
25850            .ok()
25851        }
25852    }
25853    pub unsafe fn SetPointerDeviceRect(
25854        &self,
25855        pointerdevicerect: windows::Win32::Foundation::RECT,
25856    ) -> windows_core::Result<()> {
25857        unsafe {
25858            (windows_core::Interface::vtable(self).SetPointerDeviceRect)(
25859                windows_core::Interface::as_raw(self),
25860                core::mem::transmute(pointerdevicerect),
25861            )
25862            .ok()
25863        }
25864    }
25865    pub unsafe fn DisplayRect(
25866        &self,
25867        displayrect: *mut windows::Win32::Foundation::RECT,
25868    ) -> windows_core::Result<()> {
25869        unsafe {
25870            (windows_core::Interface::vtable(self).DisplayRect)(
25871                windows_core::Interface::as_raw(self),
25872                displayrect as _,
25873            )
25874            .ok()
25875        }
25876    }
25877    pub unsafe fn SetDisplayRect(
25878        &self,
25879        displayrect: windows::Win32::Foundation::RECT,
25880    ) -> windows_core::Result<()> {
25881        unsafe {
25882            (windows_core::Interface::vtable(self).SetDisplayRect)(
25883                windows_core::Interface::as_raw(self),
25884                core::mem::transmute(displayrect),
25885            )
25886            .ok()
25887        }
25888    }
25889    pub unsafe fn PixelLocation(
25890        &self,
25891        pixellocation: *mut windows::Win32::Foundation::POINT,
25892    ) -> windows_core::Result<()> {
25893        unsafe {
25894            (windows_core::Interface::vtable(self).PixelLocation)(
25895                windows_core::Interface::as_raw(self),
25896                pixellocation as _,
25897            )
25898            .ok()
25899        }
25900    }
25901    pub unsafe fn SetPixelLocation(
25902        &self,
25903        pixellocation: windows::Win32::Foundation::POINT,
25904    ) -> windows_core::Result<()> {
25905        unsafe {
25906            (windows_core::Interface::vtable(self).SetPixelLocation)(
25907                windows_core::Interface::as_raw(self),
25908                core::mem::transmute(pixellocation),
25909            )
25910            .ok()
25911        }
25912    }
25913    pub unsafe fn HimetricLocation(
25914        &self,
25915        himetriclocation: *mut windows::Win32::Foundation::POINT,
25916    ) -> windows_core::Result<()> {
25917        unsafe {
25918            (windows_core::Interface::vtable(self).HimetricLocation)(
25919                windows_core::Interface::as_raw(self),
25920                himetriclocation as _,
25921            )
25922            .ok()
25923        }
25924    }
25925    pub unsafe fn SetHimetricLocation(
25926        &self,
25927        himetriclocation: windows::Win32::Foundation::POINT,
25928    ) -> windows_core::Result<()> {
25929        unsafe {
25930            (windows_core::Interface::vtable(self).SetHimetricLocation)(
25931                windows_core::Interface::as_raw(self),
25932                core::mem::transmute(himetriclocation),
25933            )
25934            .ok()
25935        }
25936    }
25937    pub unsafe fn PixelLocationRaw(
25938        &self,
25939        pixellocationraw: *mut windows::Win32::Foundation::POINT,
25940    ) -> windows_core::Result<()> {
25941        unsafe {
25942            (windows_core::Interface::vtable(self).PixelLocationRaw)(
25943                windows_core::Interface::as_raw(self),
25944                pixellocationraw as _,
25945            )
25946            .ok()
25947        }
25948    }
25949    pub unsafe fn SetPixelLocationRaw(
25950        &self,
25951        pixellocationraw: windows::Win32::Foundation::POINT,
25952    ) -> windows_core::Result<()> {
25953        unsafe {
25954            (windows_core::Interface::vtable(self).SetPixelLocationRaw)(
25955                windows_core::Interface::as_raw(self),
25956                core::mem::transmute(pixellocationraw),
25957            )
25958            .ok()
25959        }
25960    }
25961    pub unsafe fn HimetricLocationRaw(
25962        &self,
25963        himetriclocationraw: *mut windows::Win32::Foundation::POINT,
25964    ) -> windows_core::Result<()> {
25965        unsafe {
25966            (windows_core::Interface::vtable(self).HimetricLocationRaw)(
25967                windows_core::Interface::as_raw(self),
25968                himetriclocationraw as _,
25969            )
25970            .ok()
25971        }
25972    }
25973    pub unsafe fn SetHimetricLocationRaw(
25974        &self,
25975        himetriclocationraw: windows::Win32::Foundation::POINT,
25976    ) -> windows_core::Result<()> {
25977        unsafe {
25978            (windows_core::Interface::vtable(self).SetHimetricLocationRaw)(
25979                windows_core::Interface::as_raw(self),
25980                core::mem::transmute(himetriclocationraw),
25981            )
25982            .ok()
25983        }
25984    }
25985    pub unsafe fn Time(&self, time: *mut u32) -> windows_core::Result<()> {
25986        unsafe {
25987            (windows_core::Interface::vtable(self).Time)(
25988                windows_core::Interface::as_raw(self),
25989                time as _,
25990            )
25991            .ok()
25992        }
25993    }
25994    pub unsafe fn SetTime(&self, time: u32) -> windows_core::Result<()> {
25995        unsafe {
25996            (windows_core::Interface::vtable(self).SetTime)(
25997                windows_core::Interface::as_raw(self),
25998                time,
25999            )
26000            .ok()
26001        }
26002    }
26003    pub unsafe fn HistoryCount(&self, historycount: *mut u32) -> windows_core::Result<()> {
26004        unsafe {
26005            (windows_core::Interface::vtable(self).HistoryCount)(
26006                windows_core::Interface::as_raw(self),
26007                historycount as _,
26008            )
26009            .ok()
26010        }
26011    }
26012    pub unsafe fn SetHistoryCount(&self, historycount: u32) -> windows_core::Result<()> {
26013        unsafe {
26014            (windows_core::Interface::vtable(self).SetHistoryCount)(
26015                windows_core::Interface::as_raw(self),
26016                historycount,
26017            )
26018            .ok()
26019        }
26020    }
26021    pub unsafe fn InputData(&self, inputdata: *mut i32) -> windows_core::Result<()> {
26022        unsafe {
26023            (windows_core::Interface::vtable(self).InputData)(
26024                windows_core::Interface::as_raw(self),
26025                inputdata as _,
26026            )
26027            .ok()
26028        }
26029    }
26030    pub unsafe fn SetInputData(&self, inputdata: i32) -> windows_core::Result<()> {
26031        unsafe {
26032            (windows_core::Interface::vtable(self).SetInputData)(
26033                windows_core::Interface::as_raw(self),
26034                inputdata,
26035            )
26036            .ok()
26037        }
26038    }
26039    pub unsafe fn KeyStates(&self, keystates: *mut u32) -> windows_core::Result<()> {
26040        unsafe {
26041            (windows_core::Interface::vtable(self).KeyStates)(
26042                windows_core::Interface::as_raw(self),
26043                keystates as _,
26044            )
26045            .ok()
26046        }
26047    }
26048    pub unsafe fn SetKeyStates(&self, keystates: u32) -> windows_core::Result<()> {
26049        unsafe {
26050            (windows_core::Interface::vtable(self).SetKeyStates)(
26051                windows_core::Interface::as_raw(self),
26052                keystates,
26053            )
26054            .ok()
26055        }
26056    }
26057    pub unsafe fn PerformanceCount(&self, performancecount: *mut u64) -> windows_core::Result<()> {
26058        unsafe {
26059            (windows_core::Interface::vtable(self).PerformanceCount)(
26060                windows_core::Interface::as_raw(self),
26061                performancecount as _,
26062            )
26063            .ok()
26064        }
26065    }
26066    pub unsafe fn SetPerformanceCount(&self, performancecount: u64) -> windows_core::Result<()> {
26067        unsafe {
26068            (windows_core::Interface::vtable(self).SetPerformanceCount)(
26069                windows_core::Interface::as_raw(self),
26070                performancecount,
26071            )
26072            .ok()
26073        }
26074    }
26075    pub unsafe fn ButtonChangeKind(&self, buttonchangekind: *mut i32) -> windows_core::Result<()> {
26076        unsafe {
26077            (windows_core::Interface::vtable(self).ButtonChangeKind)(
26078                windows_core::Interface::as_raw(self),
26079                buttonchangekind as _,
26080            )
26081            .ok()
26082        }
26083    }
26084    pub unsafe fn SetButtonChangeKind(&self, buttonchangekind: i32) -> windows_core::Result<()> {
26085        unsafe {
26086            (windows_core::Interface::vtable(self).SetButtonChangeKind)(
26087                windows_core::Interface::as_raw(self),
26088                buttonchangekind,
26089            )
26090            .ok()
26091        }
26092    }
26093    pub unsafe fn PenFlags(&self, penflags: *mut u32) -> windows_core::Result<()> {
26094        unsafe {
26095            (windows_core::Interface::vtable(self).PenFlags)(
26096                windows_core::Interface::as_raw(self),
26097                penflags as _,
26098            )
26099            .ok()
26100        }
26101    }
26102    pub unsafe fn SetPenFlags(&self, penflags: u32) -> windows_core::Result<()> {
26103        unsafe {
26104            (windows_core::Interface::vtable(self).SetPenFlags)(
26105                windows_core::Interface::as_raw(self),
26106                penflags,
26107            )
26108            .ok()
26109        }
26110    }
26111    pub unsafe fn PenMask(&self, penmask: *mut u32) -> windows_core::Result<()> {
26112        unsafe {
26113            (windows_core::Interface::vtable(self).PenMask)(
26114                windows_core::Interface::as_raw(self),
26115                penmask as _,
26116            )
26117            .ok()
26118        }
26119    }
26120    pub unsafe fn SetPenMask(&self, penmask: u32) -> windows_core::Result<()> {
26121        unsafe {
26122            (windows_core::Interface::vtable(self).SetPenMask)(
26123                windows_core::Interface::as_raw(self),
26124                penmask,
26125            )
26126            .ok()
26127        }
26128    }
26129    pub unsafe fn PenPressure(&self, penpressure: *mut u32) -> windows_core::Result<()> {
26130        unsafe {
26131            (windows_core::Interface::vtable(self).PenPressure)(
26132                windows_core::Interface::as_raw(self),
26133                penpressure as _,
26134            )
26135            .ok()
26136        }
26137    }
26138    pub unsafe fn SetPenPressure(&self, penpressure: u32) -> windows_core::Result<()> {
26139        unsafe {
26140            (windows_core::Interface::vtable(self).SetPenPressure)(
26141                windows_core::Interface::as_raw(self),
26142                penpressure,
26143            )
26144            .ok()
26145        }
26146    }
26147    pub unsafe fn PenRotation(&self, penrotation: *mut u32) -> windows_core::Result<()> {
26148        unsafe {
26149            (windows_core::Interface::vtable(self).PenRotation)(
26150                windows_core::Interface::as_raw(self),
26151                penrotation as _,
26152            )
26153            .ok()
26154        }
26155    }
26156    pub unsafe fn SetPenRotation(&self, penrotation: u32) -> windows_core::Result<()> {
26157        unsafe {
26158            (windows_core::Interface::vtable(self).SetPenRotation)(
26159                windows_core::Interface::as_raw(self),
26160                penrotation,
26161            )
26162            .ok()
26163        }
26164    }
26165    pub unsafe fn PenTiltX(&self, pentiltx: *mut i32) -> windows_core::Result<()> {
26166        unsafe {
26167            (windows_core::Interface::vtable(self).PenTiltX)(
26168                windows_core::Interface::as_raw(self),
26169                pentiltx as _,
26170            )
26171            .ok()
26172        }
26173    }
26174    pub unsafe fn SetPenTiltX(&self, pentiltx: i32) -> windows_core::Result<()> {
26175        unsafe {
26176            (windows_core::Interface::vtable(self).SetPenTiltX)(
26177                windows_core::Interface::as_raw(self),
26178                pentiltx,
26179            )
26180            .ok()
26181        }
26182    }
26183    pub unsafe fn PenTiltY(&self, pentilty: *mut i32) -> windows_core::Result<()> {
26184        unsafe {
26185            (windows_core::Interface::vtable(self).PenTiltY)(
26186                windows_core::Interface::as_raw(self),
26187                pentilty as _,
26188            )
26189            .ok()
26190        }
26191    }
26192    pub unsafe fn SetPenTiltY(&self, pentilty: i32) -> windows_core::Result<()> {
26193        unsafe {
26194            (windows_core::Interface::vtable(self).SetPenTiltY)(
26195                windows_core::Interface::as_raw(self),
26196                pentilty,
26197            )
26198            .ok()
26199        }
26200    }
26201    pub unsafe fn TouchFlags(&self, touchflags: *mut u32) -> windows_core::Result<()> {
26202        unsafe {
26203            (windows_core::Interface::vtable(self).TouchFlags)(
26204                windows_core::Interface::as_raw(self),
26205                touchflags as _,
26206            )
26207            .ok()
26208        }
26209    }
26210    pub unsafe fn SetTouchFlags(&self, touchflags: u32) -> windows_core::Result<()> {
26211        unsafe {
26212            (windows_core::Interface::vtable(self).SetTouchFlags)(
26213                windows_core::Interface::as_raw(self),
26214                touchflags,
26215            )
26216            .ok()
26217        }
26218    }
26219    pub unsafe fn TouchMask(&self, touchmask: *mut u32) -> windows_core::Result<()> {
26220        unsafe {
26221            (windows_core::Interface::vtable(self).TouchMask)(
26222                windows_core::Interface::as_raw(self),
26223                touchmask as _,
26224            )
26225            .ok()
26226        }
26227    }
26228    pub unsafe fn SetTouchMask(&self, touchmask: u32) -> windows_core::Result<()> {
26229        unsafe {
26230            (windows_core::Interface::vtable(self).SetTouchMask)(
26231                windows_core::Interface::as_raw(self),
26232                touchmask,
26233            )
26234            .ok()
26235        }
26236    }
26237    pub unsafe fn TouchContact(
26238        &self,
26239        touchcontact: *mut windows::Win32::Foundation::RECT,
26240    ) -> windows_core::Result<()> {
26241        unsafe {
26242            (windows_core::Interface::vtable(self).TouchContact)(
26243                windows_core::Interface::as_raw(self),
26244                touchcontact as _,
26245            )
26246            .ok()
26247        }
26248    }
26249    pub unsafe fn SetTouchContact(
26250        &self,
26251        touchcontact: windows::Win32::Foundation::RECT,
26252    ) -> windows_core::Result<()> {
26253        unsafe {
26254            (windows_core::Interface::vtable(self).SetTouchContact)(
26255                windows_core::Interface::as_raw(self),
26256                core::mem::transmute(touchcontact),
26257            )
26258            .ok()
26259        }
26260    }
26261    pub unsafe fn TouchContactRaw(
26262        &self,
26263        touchcontactraw: *mut windows::Win32::Foundation::RECT,
26264    ) -> windows_core::Result<()> {
26265        unsafe {
26266            (windows_core::Interface::vtable(self).TouchContactRaw)(
26267                windows_core::Interface::as_raw(self),
26268                touchcontactraw as _,
26269            )
26270            .ok()
26271        }
26272    }
26273    pub unsafe fn SetTouchContactRaw(
26274        &self,
26275        touchcontactraw: windows::Win32::Foundation::RECT,
26276    ) -> windows_core::Result<()> {
26277        unsafe {
26278            (windows_core::Interface::vtable(self).SetTouchContactRaw)(
26279                windows_core::Interface::as_raw(self),
26280                core::mem::transmute(touchcontactraw),
26281            )
26282            .ok()
26283        }
26284    }
26285    pub unsafe fn TouchOrientation(&self, touchorientation: *mut u32) -> windows_core::Result<()> {
26286        unsafe {
26287            (windows_core::Interface::vtable(self).TouchOrientation)(
26288                windows_core::Interface::as_raw(self),
26289                touchorientation as _,
26290            )
26291            .ok()
26292        }
26293    }
26294    pub unsafe fn SetTouchOrientation(&self, touchorientation: u32) -> windows_core::Result<()> {
26295        unsafe {
26296            (windows_core::Interface::vtable(self).SetTouchOrientation)(
26297                windows_core::Interface::as_raw(self),
26298                touchorientation,
26299            )
26300            .ok()
26301        }
26302    }
26303    pub unsafe fn TouchPressure(&self, touchpressure: *mut u32) -> windows_core::Result<()> {
26304        unsafe {
26305            (windows_core::Interface::vtable(self).TouchPressure)(
26306                windows_core::Interface::as_raw(self),
26307                touchpressure as _,
26308            )
26309            .ok()
26310        }
26311    }
26312    pub unsafe fn SetTouchPressure(&self, touchpressure: u32) -> windows_core::Result<()> {
26313        unsafe {
26314            (windows_core::Interface::vtable(self).SetTouchPressure)(
26315                windows_core::Interface::as_raw(self),
26316                touchpressure,
26317            )
26318            .ok()
26319        }
26320    }
26321}
26322#[repr(C)]
26323#[doc(hidden)]
26324pub struct ICoreWebView2PointerInfo_Vtbl {
26325    pub base__: windows_core::IUnknown_Vtbl,
26326    pub PointerKind:
26327        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26328    pub SetPointerKind:
26329        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26330    pub PointerId:
26331        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26332    pub SetPointerId:
26333        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26334    pub FrameId:
26335        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26336    pub SetFrameId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26337    pub PointerFlags:
26338        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26339    pub SetPointerFlags:
26340        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26341    pub PointerDeviceRect: unsafe extern "system" fn(
26342        *mut core::ffi::c_void,
26343        *mut windows::Win32::Foundation::RECT,
26344    ) -> windows_core::HRESULT,
26345    pub SetPointerDeviceRect: unsafe extern "system" fn(
26346        *mut core::ffi::c_void,
26347        windows::Win32::Foundation::RECT,
26348    ) -> windows_core::HRESULT,
26349    pub DisplayRect: unsafe extern "system" fn(
26350        *mut core::ffi::c_void,
26351        *mut windows::Win32::Foundation::RECT,
26352    ) -> windows_core::HRESULT,
26353    pub SetDisplayRect: unsafe extern "system" fn(
26354        *mut core::ffi::c_void,
26355        windows::Win32::Foundation::RECT,
26356    ) -> windows_core::HRESULT,
26357    pub PixelLocation: unsafe extern "system" fn(
26358        *mut core::ffi::c_void,
26359        *mut windows::Win32::Foundation::POINT,
26360    ) -> windows_core::HRESULT,
26361    pub SetPixelLocation: unsafe extern "system" fn(
26362        *mut core::ffi::c_void,
26363        windows::Win32::Foundation::POINT,
26364    ) -> windows_core::HRESULT,
26365    pub HimetricLocation: unsafe extern "system" fn(
26366        *mut core::ffi::c_void,
26367        *mut windows::Win32::Foundation::POINT,
26368    ) -> windows_core::HRESULT,
26369    pub SetHimetricLocation: unsafe extern "system" fn(
26370        *mut core::ffi::c_void,
26371        windows::Win32::Foundation::POINT,
26372    ) -> windows_core::HRESULT,
26373    pub PixelLocationRaw: unsafe extern "system" fn(
26374        *mut core::ffi::c_void,
26375        *mut windows::Win32::Foundation::POINT,
26376    ) -> windows_core::HRESULT,
26377    pub SetPixelLocationRaw: unsafe extern "system" fn(
26378        *mut core::ffi::c_void,
26379        windows::Win32::Foundation::POINT,
26380    ) -> windows_core::HRESULT,
26381    pub HimetricLocationRaw: unsafe extern "system" fn(
26382        *mut core::ffi::c_void,
26383        *mut windows::Win32::Foundation::POINT,
26384    ) -> windows_core::HRESULT,
26385    pub SetHimetricLocationRaw: unsafe extern "system" fn(
26386        *mut core::ffi::c_void,
26387        windows::Win32::Foundation::POINT,
26388    ) -> windows_core::HRESULT,
26389    pub Time: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26390    pub SetTime: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26391    pub HistoryCount:
26392        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26393    pub SetHistoryCount:
26394        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26395    pub InputData:
26396        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
26397    pub SetInputData:
26398        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
26399    pub KeyStates:
26400        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26401    pub SetKeyStates:
26402        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26403    pub PerformanceCount:
26404        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
26405    pub SetPerformanceCount:
26406        unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
26407    pub ButtonChangeKind:
26408        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
26409    pub SetButtonChangeKind:
26410        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
26411    pub PenFlags:
26412        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26413    pub SetPenFlags:
26414        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26415    pub PenMask:
26416        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26417    pub SetPenMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26418    pub PenPressure:
26419        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26420    pub SetPenPressure:
26421        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26422    pub PenRotation:
26423        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26424    pub SetPenRotation:
26425        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26426    pub PenTiltX:
26427        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
26428    pub SetPenTiltX:
26429        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
26430    pub PenTiltY:
26431        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
26432    pub SetPenTiltY:
26433        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
26434    pub TouchFlags:
26435        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26436    pub SetTouchFlags:
26437        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26438    pub TouchMask:
26439        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26440    pub SetTouchMask:
26441        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26442    pub TouchContact: unsafe extern "system" fn(
26443        *mut core::ffi::c_void,
26444        *mut windows::Win32::Foundation::RECT,
26445    ) -> windows_core::HRESULT,
26446    pub SetTouchContact: unsafe extern "system" fn(
26447        *mut core::ffi::c_void,
26448        windows::Win32::Foundation::RECT,
26449    ) -> windows_core::HRESULT,
26450    pub TouchContactRaw: unsafe extern "system" fn(
26451        *mut core::ffi::c_void,
26452        *mut windows::Win32::Foundation::RECT,
26453    ) -> windows_core::HRESULT,
26454    pub SetTouchContactRaw: unsafe extern "system" fn(
26455        *mut core::ffi::c_void,
26456        windows::Win32::Foundation::RECT,
26457    ) -> windows_core::HRESULT,
26458    pub TouchOrientation:
26459        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26460    pub SetTouchOrientation:
26461        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26462    pub TouchPressure:
26463        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26464    pub SetTouchPressure:
26465        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26466}
26467pub trait ICoreWebView2PointerInfo_Impl: windows_core::IUnknownImpl {
26468    fn PointerKind(&self, pointerkind: *mut u32) -> windows_core::Result<()>;
26469    fn SetPointerKind(&self, pointerkind: u32) -> windows_core::Result<()>;
26470    fn PointerId(&self, pointerid: *mut u32) -> windows_core::Result<()>;
26471    fn SetPointerId(&self, pointerid: u32) -> windows_core::Result<()>;
26472    fn FrameId(&self, frameid: *mut u32) -> windows_core::Result<()>;
26473    fn SetFrameId(&self, frameid: u32) -> windows_core::Result<()>;
26474    fn PointerFlags(&self, pointerflags: *mut u32) -> windows_core::Result<()>;
26475    fn SetPointerFlags(&self, pointerflags: u32) -> windows_core::Result<()>;
26476    fn PointerDeviceRect(
26477        &self,
26478        pointerdevicerect: *mut windows::Win32::Foundation::RECT,
26479    ) -> windows_core::Result<()>;
26480    fn SetPointerDeviceRect(
26481        &self,
26482        pointerdevicerect: &windows::Win32::Foundation::RECT,
26483    ) -> windows_core::Result<()>;
26484    fn DisplayRect(
26485        &self,
26486        displayrect: *mut windows::Win32::Foundation::RECT,
26487    ) -> windows_core::Result<()>;
26488    fn SetDisplayRect(
26489        &self,
26490        displayrect: &windows::Win32::Foundation::RECT,
26491    ) -> windows_core::Result<()>;
26492    fn PixelLocation(
26493        &self,
26494        pixellocation: *mut windows::Win32::Foundation::POINT,
26495    ) -> windows_core::Result<()>;
26496    fn SetPixelLocation(
26497        &self,
26498        pixellocation: &windows::Win32::Foundation::POINT,
26499    ) -> windows_core::Result<()>;
26500    fn HimetricLocation(
26501        &self,
26502        himetriclocation: *mut windows::Win32::Foundation::POINT,
26503    ) -> windows_core::Result<()>;
26504    fn SetHimetricLocation(
26505        &self,
26506        himetriclocation: &windows::Win32::Foundation::POINT,
26507    ) -> windows_core::Result<()>;
26508    fn PixelLocationRaw(
26509        &self,
26510        pixellocationraw: *mut windows::Win32::Foundation::POINT,
26511    ) -> windows_core::Result<()>;
26512    fn SetPixelLocationRaw(
26513        &self,
26514        pixellocationraw: &windows::Win32::Foundation::POINT,
26515    ) -> windows_core::Result<()>;
26516    fn HimetricLocationRaw(
26517        &self,
26518        himetriclocationraw: *mut windows::Win32::Foundation::POINT,
26519    ) -> windows_core::Result<()>;
26520    fn SetHimetricLocationRaw(
26521        &self,
26522        himetriclocationraw: &windows::Win32::Foundation::POINT,
26523    ) -> windows_core::Result<()>;
26524    fn Time(&self, time: *mut u32) -> windows_core::Result<()>;
26525    fn SetTime(&self, time: u32) -> windows_core::Result<()>;
26526    fn HistoryCount(&self, historycount: *mut u32) -> windows_core::Result<()>;
26527    fn SetHistoryCount(&self, historycount: u32) -> windows_core::Result<()>;
26528    fn InputData(&self, inputdata: *mut i32) -> windows_core::Result<()>;
26529    fn SetInputData(&self, inputdata: i32) -> windows_core::Result<()>;
26530    fn KeyStates(&self, keystates: *mut u32) -> windows_core::Result<()>;
26531    fn SetKeyStates(&self, keystates: u32) -> windows_core::Result<()>;
26532    fn PerformanceCount(&self, performancecount: *mut u64) -> windows_core::Result<()>;
26533    fn SetPerformanceCount(&self, performancecount: u64) -> windows_core::Result<()>;
26534    fn ButtonChangeKind(&self, buttonchangekind: *mut i32) -> windows_core::Result<()>;
26535    fn SetButtonChangeKind(&self, buttonchangekind: i32) -> windows_core::Result<()>;
26536    fn PenFlags(&self, penflags: *mut u32) -> windows_core::Result<()>;
26537    fn SetPenFlags(&self, penflags: u32) -> windows_core::Result<()>;
26538    fn PenMask(&self, penmask: *mut u32) -> windows_core::Result<()>;
26539    fn SetPenMask(&self, penmask: u32) -> windows_core::Result<()>;
26540    fn PenPressure(&self, penpressure: *mut u32) -> windows_core::Result<()>;
26541    fn SetPenPressure(&self, penpressure: u32) -> windows_core::Result<()>;
26542    fn PenRotation(&self, penrotation: *mut u32) -> windows_core::Result<()>;
26543    fn SetPenRotation(&self, penrotation: u32) -> windows_core::Result<()>;
26544    fn PenTiltX(&self, pentiltx: *mut i32) -> windows_core::Result<()>;
26545    fn SetPenTiltX(&self, pentiltx: i32) -> windows_core::Result<()>;
26546    fn PenTiltY(&self, pentilty: *mut i32) -> windows_core::Result<()>;
26547    fn SetPenTiltY(&self, pentilty: i32) -> windows_core::Result<()>;
26548    fn TouchFlags(&self, touchflags: *mut u32) -> windows_core::Result<()>;
26549    fn SetTouchFlags(&self, touchflags: u32) -> windows_core::Result<()>;
26550    fn TouchMask(&self, touchmask: *mut u32) -> windows_core::Result<()>;
26551    fn SetTouchMask(&self, touchmask: u32) -> windows_core::Result<()>;
26552    fn TouchContact(
26553        &self,
26554        touchcontact: *mut windows::Win32::Foundation::RECT,
26555    ) -> windows_core::Result<()>;
26556    fn SetTouchContact(
26557        &self,
26558        touchcontact: &windows::Win32::Foundation::RECT,
26559    ) -> windows_core::Result<()>;
26560    fn TouchContactRaw(
26561        &self,
26562        touchcontactraw: *mut windows::Win32::Foundation::RECT,
26563    ) -> windows_core::Result<()>;
26564    fn SetTouchContactRaw(
26565        &self,
26566        touchcontactraw: &windows::Win32::Foundation::RECT,
26567    ) -> windows_core::Result<()>;
26568    fn TouchOrientation(&self, touchorientation: *mut u32) -> windows_core::Result<()>;
26569    fn SetTouchOrientation(&self, touchorientation: u32) -> windows_core::Result<()>;
26570    fn TouchPressure(&self, touchpressure: *mut u32) -> windows_core::Result<()>;
26571    fn SetTouchPressure(&self, touchpressure: u32) -> windows_core::Result<()>;
26572}
26573impl ICoreWebView2PointerInfo_Vtbl {
26574    pub const fn new<Identity: ICoreWebView2PointerInfo_Impl, const OFFSET: isize>() -> Self {
26575        unsafe extern "system" fn PointerKind<
26576            Identity: ICoreWebView2PointerInfo_Impl,
26577            const OFFSET: isize,
26578        >(
26579            this: *mut core::ffi::c_void,
26580            pointerkind: *mut u32,
26581        ) -> windows_core::HRESULT {
26582            unsafe {
26583                let this: &Identity =
26584                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26585                ICoreWebView2PointerInfo_Impl::PointerKind(
26586                    this,
26587                    core::mem::transmute_copy(&pointerkind),
26588                )
26589                .into()
26590            }
26591        }
26592        unsafe extern "system" fn SetPointerKind<
26593            Identity: ICoreWebView2PointerInfo_Impl,
26594            const OFFSET: isize,
26595        >(
26596            this: *mut core::ffi::c_void,
26597            pointerkind: u32,
26598        ) -> windows_core::HRESULT {
26599            unsafe {
26600                let this: &Identity =
26601                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26602                ICoreWebView2PointerInfo_Impl::SetPointerKind(
26603                    this,
26604                    core::mem::transmute_copy(&pointerkind),
26605                )
26606                .into()
26607            }
26608        }
26609        unsafe extern "system" fn PointerId<
26610            Identity: ICoreWebView2PointerInfo_Impl,
26611            const OFFSET: isize,
26612        >(
26613            this: *mut core::ffi::c_void,
26614            pointerid: *mut u32,
26615        ) -> windows_core::HRESULT {
26616            unsafe {
26617                let this: &Identity =
26618                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26619                ICoreWebView2PointerInfo_Impl::PointerId(
26620                    this,
26621                    core::mem::transmute_copy(&pointerid),
26622                )
26623                .into()
26624            }
26625        }
26626        unsafe extern "system" fn SetPointerId<
26627            Identity: ICoreWebView2PointerInfo_Impl,
26628            const OFFSET: isize,
26629        >(
26630            this: *mut core::ffi::c_void,
26631            pointerid: u32,
26632        ) -> windows_core::HRESULT {
26633            unsafe {
26634                let this: &Identity =
26635                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26636                ICoreWebView2PointerInfo_Impl::SetPointerId(
26637                    this,
26638                    core::mem::transmute_copy(&pointerid),
26639                )
26640                .into()
26641            }
26642        }
26643        unsafe extern "system" fn FrameId<
26644            Identity: ICoreWebView2PointerInfo_Impl,
26645            const OFFSET: isize,
26646        >(
26647            this: *mut core::ffi::c_void,
26648            frameid: *mut u32,
26649        ) -> windows_core::HRESULT {
26650            unsafe {
26651                let this: &Identity =
26652                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26653                ICoreWebView2PointerInfo_Impl::FrameId(this, core::mem::transmute_copy(&frameid))
26654                    .into()
26655            }
26656        }
26657        unsafe extern "system" fn SetFrameId<
26658            Identity: ICoreWebView2PointerInfo_Impl,
26659            const OFFSET: isize,
26660        >(
26661            this: *mut core::ffi::c_void,
26662            frameid: u32,
26663        ) -> windows_core::HRESULT {
26664            unsafe {
26665                let this: &Identity =
26666                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26667                ICoreWebView2PointerInfo_Impl::SetFrameId(this, core::mem::transmute_copy(&frameid))
26668                    .into()
26669            }
26670        }
26671        unsafe extern "system" fn PointerFlags<
26672            Identity: ICoreWebView2PointerInfo_Impl,
26673            const OFFSET: isize,
26674        >(
26675            this: *mut core::ffi::c_void,
26676            pointerflags: *mut u32,
26677        ) -> windows_core::HRESULT {
26678            unsafe {
26679                let this: &Identity =
26680                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26681                ICoreWebView2PointerInfo_Impl::PointerFlags(
26682                    this,
26683                    core::mem::transmute_copy(&pointerflags),
26684                )
26685                .into()
26686            }
26687        }
26688        unsafe extern "system" fn SetPointerFlags<
26689            Identity: ICoreWebView2PointerInfo_Impl,
26690            const OFFSET: isize,
26691        >(
26692            this: *mut core::ffi::c_void,
26693            pointerflags: u32,
26694        ) -> windows_core::HRESULT {
26695            unsafe {
26696                let this: &Identity =
26697                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26698                ICoreWebView2PointerInfo_Impl::SetPointerFlags(
26699                    this,
26700                    core::mem::transmute_copy(&pointerflags),
26701                )
26702                .into()
26703            }
26704        }
26705        unsafe extern "system" fn PointerDeviceRect<
26706            Identity: ICoreWebView2PointerInfo_Impl,
26707            const OFFSET: isize,
26708        >(
26709            this: *mut core::ffi::c_void,
26710            pointerdevicerect: *mut windows::Win32::Foundation::RECT,
26711        ) -> windows_core::HRESULT {
26712            unsafe {
26713                let this: &Identity =
26714                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26715                ICoreWebView2PointerInfo_Impl::PointerDeviceRect(
26716                    this,
26717                    core::mem::transmute_copy(&pointerdevicerect),
26718                )
26719                .into()
26720            }
26721        }
26722        unsafe extern "system" fn SetPointerDeviceRect<
26723            Identity: ICoreWebView2PointerInfo_Impl,
26724            const OFFSET: isize,
26725        >(
26726            this: *mut core::ffi::c_void,
26727            pointerdevicerect: windows::Win32::Foundation::RECT,
26728        ) -> windows_core::HRESULT {
26729            unsafe {
26730                let this: &Identity =
26731                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26732                ICoreWebView2PointerInfo_Impl::SetPointerDeviceRect(
26733                    this,
26734                    core::mem::transmute(&pointerdevicerect),
26735                )
26736                .into()
26737            }
26738        }
26739        unsafe extern "system" fn DisplayRect<
26740            Identity: ICoreWebView2PointerInfo_Impl,
26741            const OFFSET: isize,
26742        >(
26743            this: *mut core::ffi::c_void,
26744            displayrect: *mut windows::Win32::Foundation::RECT,
26745        ) -> windows_core::HRESULT {
26746            unsafe {
26747                let this: &Identity =
26748                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26749                ICoreWebView2PointerInfo_Impl::DisplayRect(
26750                    this,
26751                    core::mem::transmute_copy(&displayrect),
26752                )
26753                .into()
26754            }
26755        }
26756        unsafe extern "system" fn SetDisplayRect<
26757            Identity: ICoreWebView2PointerInfo_Impl,
26758            const OFFSET: isize,
26759        >(
26760            this: *mut core::ffi::c_void,
26761            displayrect: windows::Win32::Foundation::RECT,
26762        ) -> windows_core::HRESULT {
26763            unsafe {
26764                let this: &Identity =
26765                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26766                ICoreWebView2PointerInfo_Impl::SetDisplayRect(
26767                    this,
26768                    core::mem::transmute(&displayrect),
26769                )
26770                .into()
26771            }
26772        }
26773        unsafe extern "system" fn PixelLocation<
26774            Identity: ICoreWebView2PointerInfo_Impl,
26775            const OFFSET: isize,
26776        >(
26777            this: *mut core::ffi::c_void,
26778            pixellocation: *mut windows::Win32::Foundation::POINT,
26779        ) -> windows_core::HRESULT {
26780            unsafe {
26781                let this: &Identity =
26782                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26783                ICoreWebView2PointerInfo_Impl::PixelLocation(
26784                    this,
26785                    core::mem::transmute_copy(&pixellocation),
26786                )
26787                .into()
26788            }
26789        }
26790        unsafe extern "system" fn SetPixelLocation<
26791            Identity: ICoreWebView2PointerInfo_Impl,
26792            const OFFSET: isize,
26793        >(
26794            this: *mut core::ffi::c_void,
26795            pixellocation: windows::Win32::Foundation::POINT,
26796        ) -> windows_core::HRESULT {
26797            unsafe {
26798                let this: &Identity =
26799                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26800                ICoreWebView2PointerInfo_Impl::SetPixelLocation(
26801                    this,
26802                    core::mem::transmute(&pixellocation),
26803                )
26804                .into()
26805            }
26806        }
26807        unsafe extern "system" fn HimetricLocation<
26808            Identity: ICoreWebView2PointerInfo_Impl,
26809            const OFFSET: isize,
26810        >(
26811            this: *mut core::ffi::c_void,
26812            himetriclocation: *mut windows::Win32::Foundation::POINT,
26813        ) -> windows_core::HRESULT {
26814            unsafe {
26815                let this: &Identity =
26816                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26817                ICoreWebView2PointerInfo_Impl::HimetricLocation(
26818                    this,
26819                    core::mem::transmute_copy(&himetriclocation),
26820                )
26821                .into()
26822            }
26823        }
26824        unsafe extern "system" fn SetHimetricLocation<
26825            Identity: ICoreWebView2PointerInfo_Impl,
26826            const OFFSET: isize,
26827        >(
26828            this: *mut core::ffi::c_void,
26829            himetriclocation: windows::Win32::Foundation::POINT,
26830        ) -> windows_core::HRESULT {
26831            unsafe {
26832                let this: &Identity =
26833                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26834                ICoreWebView2PointerInfo_Impl::SetHimetricLocation(
26835                    this,
26836                    core::mem::transmute(&himetriclocation),
26837                )
26838                .into()
26839            }
26840        }
26841        unsafe extern "system" fn PixelLocationRaw<
26842            Identity: ICoreWebView2PointerInfo_Impl,
26843            const OFFSET: isize,
26844        >(
26845            this: *mut core::ffi::c_void,
26846            pixellocationraw: *mut windows::Win32::Foundation::POINT,
26847        ) -> windows_core::HRESULT {
26848            unsafe {
26849                let this: &Identity =
26850                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26851                ICoreWebView2PointerInfo_Impl::PixelLocationRaw(
26852                    this,
26853                    core::mem::transmute_copy(&pixellocationraw),
26854                )
26855                .into()
26856            }
26857        }
26858        unsafe extern "system" fn SetPixelLocationRaw<
26859            Identity: ICoreWebView2PointerInfo_Impl,
26860            const OFFSET: isize,
26861        >(
26862            this: *mut core::ffi::c_void,
26863            pixellocationraw: windows::Win32::Foundation::POINT,
26864        ) -> windows_core::HRESULT {
26865            unsafe {
26866                let this: &Identity =
26867                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26868                ICoreWebView2PointerInfo_Impl::SetPixelLocationRaw(
26869                    this,
26870                    core::mem::transmute(&pixellocationraw),
26871                )
26872                .into()
26873            }
26874        }
26875        unsafe extern "system" fn HimetricLocationRaw<
26876            Identity: ICoreWebView2PointerInfo_Impl,
26877            const OFFSET: isize,
26878        >(
26879            this: *mut core::ffi::c_void,
26880            himetriclocationraw: *mut windows::Win32::Foundation::POINT,
26881        ) -> windows_core::HRESULT {
26882            unsafe {
26883                let this: &Identity =
26884                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26885                ICoreWebView2PointerInfo_Impl::HimetricLocationRaw(
26886                    this,
26887                    core::mem::transmute_copy(&himetriclocationraw),
26888                )
26889                .into()
26890            }
26891        }
26892        unsafe extern "system" fn SetHimetricLocationRaw<
26893            Identity: ICoreWebView2PointerInfo_Impl,
26894            const OFFSET: isize,
26895        >(
26896            this: *mut core::ffi::c_void,
26897            himetriclocationraw: windows::Win32::Foundation::POINT,
26898        ) -> windows_core::HRESULT {
26899            unsafe {
26900                let this: &Identity =
26901                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26902                ICoreWebView2PointerInfo_Impl::SetHimetricLocationRaw(
26903                    this,
26904                    core::mem::transmute(&himetriclocationraw),
26905                )
26906                .into()
26907            }
26908        }
26909        unsafe extern "system" fn Time<
26910            Identity: ICoreWebView2PointerInfo_Impl,
26911            const OFFSET: isize,
26912        >(
26913            this: *mut core::ffi::c_void,
26914            time: *mut u32,
26915        ) -> windows_core::HRESULT {
26916            unsafe {
26917                let this: &Identity =
26918                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26919                ICoreWebView2PointerInfo_Impl::Time(this, core::mem::transmute_copy(&time)).into()
26920            }
26921        }
26922        unsafe extern "system" fn SetTime<
26923            Identity: ICoreWebView2PointerInfo_Impl,
26924            const OFFSET: isize,
26925        >(
26926            this: *mut core::ffi::c_void,
26927            time: u32,
26928        ) -> windows_core::HRESULT {
26929            unsafe {
26930                let this: &Identity =
26931                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26932                ICoreWebView2PointerInfo_Impl::SetTime(this, core::mem::transmute_copy(&time))
26933                    .into()
26934            }
26935        }
26936        unsafe extern "system" fn HistoryCount<
26937            Identity: ICoreWebView2PointerInfo_Impl,
26938            const OFFSET: isize,
26939        >(
26940            this: *mut core::ffi::c_void,
26941            historycount: *mut u32,
26942        ) -> windows_core::HRESULT {
26943            unsafe {
26944                let this: &Identity =
26945                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26946                ICoreWebView2PointerInfo_Impl::HistoryCount(
26947                    this,
26948                    core::mem::transmute_copy(&historycount),
26949                )
26950                .into()
26951            }
26952        }
26953        unsafe extern "system" fn SetHistoryCount<
26954            Identity: ICoreWebView2PointerInfo_Impl,
26955            const OFFSET: isize,
26956        >(
26957            this: *mut core::ffi::c_void,
26958            historycount: u32,
26959        ) -> windows_core::HRESULT {
26960            unsafe {
26961                let this: &Identity =
26962                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26963                ICoreWebView2PointerInfo_Impl::SetHistoryCount(
26964                    this,
26965                    core::mem::transmute_copy(&historycount),
26966                )
26967                .into()
26968            }
26969        }
26970        unsafe extern "system" fn InputData<
26971            Identity: ICoreWebView2PointerInfo_Impl,
26972            const OFFSET: isize,
26973        >(
26974            this: *mut core::ffi::c_void,
26975            inputdata: *mut i32,
26976        ) -> windows_core::HRESULT {
26977            unsafe {
26978                let this: &Identity =
26979                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26980                ICoreWebView2PointerInfo_Impl::InputData(
26981                    this,
26982                    core::mem::transmute_copy(&inputdata),
26983                )
26984                .into()
26985            }
26986        }
26987        unsafe extern "system" fn SetInputData<
26988            Identity: ICoreWebView2PointerInfo_Impl,
26989            const OFFSET: isize,
26990        >(
26991            this: *mut core::ffi::c_void,
26992            inputdata: i32,
26993        ) -> windows_core::HRESULT {
26994            unsafe {
26995                let this: &Identity =
26996                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26997                ICoreWebView2PointerInfo_Impl::SetInputData(
26998                    this,
26999                    core::mem::transmute_copy(&inputdata),
27000                )
27001                .into()
27002            }
27003        }
27004        unsafe extern "system" fn KeyStates<
27005            Identity: ICoreWebView2PointerInfo_Impl,
27006            const OFFSET: isize,
27007        >(
27008            this: *mut core::ffi::c_void,
27009            keystates: *mut u32,
27010        ) -> windows_core::HRESULT {
27011            unsafe {
27012                let this: &Identity =
27013                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27014                ICoreWebView2PointerInfo_Impl::KeyStates(
27015                    this,
27016                    core::mem::transmute_copy(&keystates),
27017                )
27018                .into()
27019            }
27020        }
27021        unsafe extern "system" fn SetKeyStates<
27022            Identity: ICoreWebView2PointerInfo_Impl,
27023            const OFFSET: isize,
27024        >(
27025            this: *mut core::ffi::c_void,
27026            keystates: u32,
27027        ) -> windows_core::HRESULT {
27028            unsafe {
27029                let this: &Identity =
27030                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27031                ICoreWebView2PointerInfo_Impl::SetKeyStates(
27032                    this,
27033                    core::mem::transmute_copy(&keystates),
27034                )
27035                .into()
27036            }
27037        }
27038        unsafe extern "system" fn PerformanceCount<
27039            Identity: ICoreWebView2PointerInfo_Impl,
27040            const OFFSET: isize,
27041        >(
27042            this: *mut core::ffi::c_void,
27043            performancecount: *mut u64,
27044        ) -> windows_core::HRESULT {
27045            unsafe {
27046                let this: &Identity =
27047                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27048                ICoreWebView2PointerInfo_Impl::PerformanceCount(
27049                    this,
27050                    core::mem::transmute_copy(&performancecount),
27051                )
27052                .into()
27053            }
27054        }
27055        unsafe extern "system" fn SetPerformanceCount<
27056            Identity: ICoreWebView2PointerInfo_Impl,
27057            const OFFSET: isize,
27058        >(
27059            this: *mut core::ffi::c_void,
27060            performancecount: u64,
27061        ) -> windows_core::HRESULT {
27062            unsafe {
27063                let this: &Identity =
27064                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27065                ICoreWebView2PointerInfo_Impl::SetPerformanceCount(
27066                    this,
27067                    core::mem::transmute_copy(&performancecount),
27068                )
27069                .into()
27070            }
27071        }
27072        unsafe extern "system" fn ButtonChangeKind<
27073            Identity: ICoreWebView2PointerInfo_Impl,
27074            const OFFSET: isize,
27075        >(
27076            this: *mut core::ffi::c_void,
27077            buttonchangekind: *mut i32,
27078        ) -> windows_core::HRESULT {
27079            unsafe {
27080                let this: &Identity =
27081                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27082                ICoreWebView2PointerInfo_Impl::ButtonChangeKind(
27083                    this,
27084                    core::mem::transmute_copy(&buttonchangekind),
27085                )
27086                .into()
27087            }
27088        }
27089        unsafe extern "system" fn SetButtonChangeKind<
27090            Identity: ICoreWebView2PointerInfo_Impl,
27091            const OFFSET: isize,
27092        >(
27093            this: *mut core::ffi::c_void,
27094            buttonchangekind: i32,
27095        ) -> windows_core::HRESULT {
27096            unsafe {
27097                let this: &Identity =
27098                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27099                ICoreWebView2PointerInfo_Impl::SetButtonChangeKind(
27100                    this,
27101                    core::mem::transmute_copy(&buttonchangekind),
27102                )
27103                .into()
27104            }
27105        }
27106        unsafe extern "system" fn PenFlags<
27107            Identity: ICoreWebView2PointerInfo_Impl,
27108            const OFFSET: isize,
27109        >(
27110            this: *mut core::ffi::c_void,
27111            penflags: *mut u32,
27112        ) -> windows_core::HRESULT {
27113            unsafe {
27114                let this: &Identity =
27115                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27116                ICoreWebView2PointerInfo_Impl::PenFlags(this, core::mem::transmute_copy(&penflags))
27117                    .into()
27118            }
27119        }
27120        unsafe extern "system" fn SetPenFlags<
27121            Identity: ICoreWebView2PointerInfo_Impl,
27122            const OFFSET: isize,
27123        >(
27124            this: *mut core::ffi::c_void,
27125            penflags: u32,
27126        ) -> windows_core::HRESULT {
27127            unsafe {
27128                let this: &Identity =
27129                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27130                ICoreWebView2PointerInfo_Impl::SetPenFlags(
27131                    this,
27132                    core::mem::transmute_copy(&penflags),
27133                )
27134                .into()
27135            }
27136        }
27137        unsafe extern "system" fn PenMask<
27138            Identity: ICoreWebView2PointerInfo_Impl,
27139            const OFFSET: isize,
27140        >(
27141            this: *mut core::ffi::c_void,
27142            penmask: *mut u32,
27143        ) -> windows_core::HRESULT {
27144            unsafe {
27145                let this: &Identity =
27146                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27147                ICoreWebView2PointerInfo_Impl::PenMask(this, core::mem::transmute_copy(&penmask))
27148                    .into()
27149            }
27150        }
27151        unsafe extern "system" fn SetPenMask<
27152            Identity: ICoreWebView2PointerInfo_Impl,
27153            const OFFSET: isize,
27154        >(
27155            this: *mut core::ffi::c_void,
27156            penmask: u32,
27157        ) -> windows_core::HRESULT {
27158            unsafe {
27159                let this: &Identity =
27160                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27161                ICoreWebView2PointerInfo_Impl::SetPenMask(this, core::mem::transmute_copy(&penmask))
27162                    .into()
27163            }
27164        }
27165        unsafe extern "system" fn PenPressure<
27166            Identity: ICoreWebView2PointerInfo_Impl,
27167            const OFFSET: isize,
27168        >(
27169            this: *mut core::ffi::c_void,
27170            penpressure: *mut u32,
27171        ) -> windows_core::HRESULT {
27172            unsafe {
27173                let this: &Identity =
27174                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27175                ICoreWebView2PointerInfo_Impl::PenPressure(
27176                    this,
27177                    core::mem::transmute_copy(&penpressure),
27178                )
27179                .into()
27180            }
27181        }
27182        unsafe extern "system" fn SetPenPressure<
27183            Identity: ICoreWebView2PointerInfo_Impl,
27184            const OFFSET: isize,
27185        >(
27186            this: *mut core::ffi::c_void,
27187            penpressure: u32,
27188        ) -> windows_core::HRESULT {
27189            unsafe {
27190                let this: &Identity =
27191                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27192                ICoreWebView2PointerInfo_Impl::SetPenPressure(
27193                    this,
27194                    core::mem::transmute_copy(&penpressure),
27195                )
27196                .into()
27197            }
27198        }
27199        unsafe extern "system" fn PenRotation<
27200            Identity: ICoreWebView2PointerInfo_Impl,
27201            const OFFSET: isize,
27202        >(
27203            this: *mut core::ffi::c_void,
27204            penrotation: *mut u32,
27205        ) -> windows_core::HRESULT {
27206            unsafe {
27207                let this: &Identity =
27208                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27209                ICoreWebView2PointerInfo_Impl::PenRotation(
27210                    this,
27211                    core::mem::transmute_copy(&penrotation),
27212                )
27213                .into()
27214            }
27215        }
27216        unsafe extern "system" fn SetPenRotation<
27217            Identity: ICoreWebView2PointerInfo_Impl,
27218            const OFFSET: isize,
27219        >(
27220            this: *mut core::ffi::c_void,
27221            penrotation: u32,
27222        ) -> windows_core::HRESULT {
27223            unsafe {
27224                let this: &Identity =
27225                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27226                ICoreWebView2PointerInfo_Impl::SetPenRotation(
27227                    this,
27228                    core::mem::transmute_copy(&penrotation),
27229                )
27230                .into()
27231            }
27232        }
27233        unsafe extern "system" fn PenTiltX<
27234            Identity: ICoreWebView2PointerInfo_Impl,
27235            const OFFSET: isize,
27236        >(
27237            this: *mut core::ffi::c_void,
27238            pentiltx: *mut i32,
27239        ) -> windows_core::HRESULT {
27240            unsafe {
27241                let this: &Identity =
27242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27243                ICoreWebView2PointerInfo_Impl::PenTiltX(this, core::mem::transmute_copy(&pentiltx))
27244                    .into()
27245            }
27246        }
27247        unsafe extern "system" fn SetPenTiltX<
27248            Identity: ICoreWebView2PointerInfo_Impl,
27249            const OFFSET: isize,
27250        >(
27251            this: *mut core::ffi::c_void,
27252            pentiltx: i32,
27253        ) -> windows_core::HRESULT {
27254            unsafe {
27255                let this: &Identity =
27256                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27257                ICoreWebView2PointerInfo_Impl::SetPenTiltX(
27258                    this,
27259                    core::mem::transmute_copy(&pentiltx),
27260                )
27261                .into()
27262            }
27263        }
27264        unsafe extern "system" fn PenTiltY<
27265            Identity: ICoreWebView2PointerInfo_Impl,
27266            const OFFSET: isize,
27267        >(
27268            this: *mut core::ffi::c_void,
27269            pentilty: *mut i32,
27270        ) -> windows_core::HRESULT {
27271            unsafe {
27272                let this: &Identity =
27273                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27274                ICoreWebView2PointerInfo_Impl::PenTiltY(this, core::mem::transmute_copy(&pentilty))
27275                    .into()
27276            }
27277        }
27278        unsafe extern "system" fn SetPenTiltY<
27279            Identity: ICoreWebView2PointerInfo_Impl,
27280            const OFFSET: isize,
27281        >(
27282            this: *mut core::ffi::c_void,
27283            pentilty: i32,
27284        ) -> windows_core::HRESULT {
27285            unsafe {
27286                let this: &Identity =
27287                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27288                ICoreWebView2PointerInfo_Impl::SetPenTiltY(
27289                    this,
27290                    core::mem::transmute_copy(&pentilty),
27291                )
27292                .into()
27293            }
27294        }
27295        unsafe extern "system" fn TouchFlags<
27296            Identity: ICoreWebView2PointerInfo_Impl,
27297            const OFFSET: isize,
27298        >(
27299            this: *mut core::ffi::c_void,
27300            touchflags: *mut u32,
27301        ) -> windows_core::HRESULT {
27302            unsafe {
27303                let this: &Identity =
27304                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27305                ICoreWebView2PointerInfo_Impl::TouchFlags(
27306                    this,
27307                    core::mem::transmute_copy(&touchflags),
27308                )
27309                .into()
27310            }
27311        }
27312        unsafe extern "system" fn SetTouchFlags<
27313            Identity: ICoreWebView2PointerInfo_Impl,
27314            const OFFSET: isize,
27315        >(
27316            this: *mut core::ffi::c_void,
27317            touchflags: u32,
27318        ) -> windows_core::HRESULT {
27319            unsafe {
27320                let this: &Identity =
27321                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27322                ICoreWebView2PointerInfo_Impl::SetTouchFlags(
27323                    this,
27324                    core::mem::transmute_copy(&touchflags),
27325                )
27326                .into()
27327            }
27328        }
27329        unsafe extern "system" fn TouchMask<
27330            Identity: ICoreWebView2PointerInfo_Impl,
27331            const OFFSET: isize,
27332        >(
27333            this: *mut core::ffi::c_void,
27334            touchmask: *mut u32,
27335        ) -> windows_core::HRESULT {
27336            unsafe {
27337                let this: &Identity =
27338                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27339                ICoreWebView2PointerInfo_Impl::TouchMask(
27340                    this,
27341                    core::mem::transmute_copy(&touchmask),
27342                )
27343                .into()
27344            }
27345        }
27346        unsafe extern "system" fn SetTouchMask<
27347            Identity: ICoreWebView2PointerInfo_Impl,
27348            const OFFSET: isize,
27349        >(
27350            this: *mut core::ffi::c_void,
27351            touchmask: u32,
27352        ) -> windows_core::HRESULT {
27353            unsafe {
27354                let this: &Identity =
27355                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27356                ICoreWebView2PointerInfo_Impl::SetTouchMask(
27357                    this,
27358                    core::mem::transmute_copy(&touchmask),
27359                )
27360                .into()
27361            }
27362        }
27363        unsafe extern "system" fn TouchContact<
27364            Identity: ICoreWebView2PointerInfo_Impl,
27365            const OFFSET: isize,
27366        >(
27367            this: *mut core::ffi::c_void,
27368            touchcontact: *mut windows::Win32::Foundation::RECT,
27369        ) -> windows_core::HRESULT {
27370            unsafe {
27371                let this: &Identity =
27372                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27373                ICoreWebView2PointerInfo_Impl::TouchContact(
27374                    this,
27375                    core::mem::transmute_copy(&touchcontact),
27376                )
27377                .into()
27378            }
27379        }
27380        unsafe extern "system" fn SetTouchContact<
27381            Identity: ICoreWebView2PointerInfo_Impl,
27382            const OFFSET: isize,
27383        >(
27384            this: *mut core::ffi::c_void,
27385            touchcontact: windows::Win32::Foundation::RECT,
27386        ) -> windows_core::HRESULT {
27387            unsafe {
27388                let this: &Identity =
27389                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27390                ICoreWebView2PointerInfo_Impl::SetTouchContact(
27391                    this,
27392                    core::mem::transmute(&touchcontact),
27393                )
27394                .into()
27395            }
27396        }
27397        unsafe extern "system" fn TouchContactRaw<
27398            Identity: ICoreWebView2PointerInfo_Impl,
27399            const OFFSET: isize,
27400        >(
27401            this: *mut core::ffi::c_void,
27402            touchcontactraw: *mut windows::Win32::Foundation::RECT,
27403        ) -> windows_core::HRESULT {
27404            unsafe {
27405                let this: &Identity =
27406                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27407                ICoreWebView2PointerInfo_Impl::TouchContactRaw(
27408                    this,
27409                    core::mem::transmute_copy(&touchcontactraw),
27410                )
27411                .into()
27412            }
27413        }
27414        unsafe extern "system" fn SetTouchContactRaw<
27415            Identity: ICoreWebView2PointerInfo_Impl,
27416            const OFFSET: isize,
27417        >(
27418            this: *mut core::ffi::c_void,
27419            touchcontactraw: windows::Win32::Foundation::RECT,
27420        ) -> windows_core::HRESULT {
27421            unsafe {
27422                let this: &Identity =
27423                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27424                ICoreWebView2PointerInfo_Impl::SetTouchContactRaw(
27425                    this,
27426                    core::mem::transmute(&touchcontactraw),
27427                )
27428                .into()
27429            }
27430        }
27431        unsafe extern "system" fn TouchOrientation<
27432            Identity: ICoreWebView2PointerInfo_Impl,
27433            const OFFSET: isize,
27434        >(
27435            this: *mut core::ffi::c_void,
27436            touchorientation: *mut u32,
27437        ) -> windows_core::HRESULT {
27438            unsafe {
27439                let this: &Identity =
27440                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27441                ICoreWebView2PointerInfo_Impl::TouchOrientation(
27442                    this,
27443                    core::mem::transmute_copy(&touchorientation),
27444                )
27445                .into()
27446            }
27447        }
27448        unsafe extern "system" fn SetTouchOrientation<
27449            Identity: ICoreWebView2PointerInfo_Impl,
27450            const OFFSET: isize,
27451        >(
27452            this: *mut core::ffi::c_void,
27453            touchorientation: u32,
27454        ) -> windows_core::HRESULT {
27455            unsafe {
27456                let this: &Identity =
27457                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27458                ICoreWebView2PointerInfo_Impl::SetTouchOrientation(
27459                    this,
27460                    core::mem::transmute_copy(&touchorientation),
27461                )
27462                .into()
27463            }
27464        }
27465        unsafe extern "system" fn TouchPressure<
27466            Identity: ICoreWebView2PointerInfo_Impl,
27467            const OFFSET: isize,
27468        >(
27469            this: *mut core::ffi::c_void,
27470            touchpressure: *mut u32,
27471        ) -> windows_core::HRESULT {
27472            unsafe {
27473                let this: &Identity =
27474                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27475                ICoreWebView2PointerInfo_Impl::TouchPressure(
27476                    this,
27477                    core::mem::transmute_copy(&touchpressure),
27478                )
27479                .into()
27480            }
27481        }
27482        unsafe extern "system" fn SetTouchPressure<
27483            Identity: ICoreWebView2PointerInfo_Impl,
27484            const OFFSET: isize,
27485        >(
27486            this: *mut core::ffi::c_void,
27487            touchpressure: u32,
27488        ) -> windows_core::HRESULT {
27489            unsafe {
27490                let this: &Identity =
27491                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27492                ICoreWebView2PointerInfo_Impl::SetTouchPressure(
27493                    this,
27494                    core::mem::transmute_copy(&touchpressure),
27495                )
27496                .into()
27497            }
27498        }
27499        Self {
27500            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
27501            PointerKind: PointerKind::<Identity, OFFSET>,
27502            SetPointerKind: SetPointerKind::<Identity, OFFSET>,
27503            PointerId: PointerId::<Identity, OFFSET>,
27504            SetPointerId: SetPointerId::<Identity, OFFSET>,
27505            FrameId: FrameId::<Identity, OFFSET>,
27506            SetFrameId: SetFrameId::<Identity, OFFSET>,
27507            PointerFlags: PointerFlags::<Identity, OFFSET>,
27508            SetPointerFlags: SetPointerFlags::<Identity, OFFSET>,
27509            PointerDeviceRect: PointerDeviceRect::<Identity, OFFSET>,
27510            SetPointerDeviceRect: SetPointerDeviceRect::<Identity, OFFSET>,
27511            DisplayRect: DisplayRect::<Identity, OFFSET>,
27512            SetDisplayRect: SetDisplayRect::<Identity, OFFSET>,
27513            PixelLocation: PixelLocation::<Identity, OFFSET>,
27514            SetPixelLocation: SetPixelLocation::<Identity, OFFSET>,
27515            HimetricLocation: HimetricLocation::<Identity, OFFSET>,
27516            SetHimetricLocation: SetHimetricLocation::<Identity, OFFSET>,
27517            PixelLocationRaw: PixelLocationRaw::<Identity, OFFSET>,
27518            SetPixelLocationRaw: SetPixelLocationRaw::<Identity, OFFSET>,
27519            HimetricLocationRaw: HimetricLocationRaw::<Identity, OFFSET>,
27520            SetHimetricLocationRaw: SetHimetricLocationRaw::<Identity, OFFSET>,
27521            Time: Time::<Identity, OFFSET>,
27522            SetTime: SetTime::<Identity, OFFSET>,
27523            HistoryCount: HistoryCount::<Identity, OFFSET>,
27524            SetHistoryCount: SetHistoryCount::<Identity, OFFSET>,
27525            InputData: InputData::<Identity, OFFSET>,
27526            SetInputData: SetInputData::<Identity, OFFSET>,
27527            KeyStates: KeyStates::<Identity, OFFSET>,
27528            SetKeyStates: SetKeyStates::<Identity, OFFSET>,
27529            PerformanceCount: PerformanceCount::<Identity, OFFSET>,
27530            SetPerformanceCount: SetPerformanceCount::<Identity, OFFSET>,
27531            ButtonChangeKind: ButtonChangeKind::<Identity, OFFSET>,
27532            SetButtonChangeKind: SetButtonChangeKind::<Identity, OFFSET>,
27533            PenFlags: PenFlags::<Identity, OFFSET>,
27534            SetPenFlags: SetPenFlags::<Identity, OFFSET>,
27535            PenMask: PenMask::<Identity, OFFSET>,
27536            SetPenMask: SetPenMask::<Identity, OFFSET>,
27537            PenPressure: PenPressure::<Identity, OFFSET>,
27538            SetPenPressure: SetPenPressure::<Identity, OFFSET>,
27539            PenRotation: PenRotation::<Identity, OFFSET>,
27540            SetPenRotation: SetPenRotation::<Identity, OFFSET>,
27541            PenTiltX: PenTiltX::<Identity, OFFSET>,
27542            SetPenTiltX: SetPenTiltX::<Identity, OFFSET>,
27543            PenTiltY: PenTiltY::<Identity, OFFSET>,
27544            SetPenTiltY: SetPenTiltY::<Identity, OFFSET>,
27545            TouchFlags: TouchFlags::<Identity, OFFSET>,
27546            SetTouchFlags: SetTouchFlags::<Identity, OFFSET>,
27547            TouchMask: TouchMask::<Identity, OFFSET>,
27548            SetTouchMask: SetTouchMask::<Identity, OFFSET>,
27549            TouchContact: TouchContact::<Identity, OFFSET>,
27550            SetTouchContact: SetTouchContact::<Identity, OFFSET>,
27551            TouchContactRaw: TouchContactRaw::<Identity, OFFSET>,
27552            SetTouchContactRaw: SetTouchContactRaw::<Identity, OFFSET>,
27553            TouchOrientation: TouchOrientation::<Identity, OFFSET>,
27554            SetTouchOrientation: SetTouchOrientation::<Identity, OFFSET>,
27555            TouchPressure: TouchPressure::<Identity, OFFSET>,
27556            SetTouchPressure: SetTouchPressure::<Identity, OFFSET>,
27557        }
27558    }
27559    pub fn matches(iid: &windows_core::GUID) -> bool {
27560        iid == &<ICoreWebView2PointerInfo as windows_core::Interface>::IID
27561    }
27562}
27563impl windows_core::RuntimeName for ICoreWebView2PointerInfo {}
27564windows_core::imp::define_interface!(
27565    ICoreWebView2PrintCompletedHandler,
27566    ICoreWebView2PrintCompletedHandler_Vtbl,
27567    0x8fd80075_ed08_42db_8570_f5d14977461e
27568);
27569windows_core::imp::interface_hierarchy!(ICoreWebView2PrintCompletedHandler, windows_core::IUnknown);
27570impl ICoreWebView2PrintCompletedHandler {
27571    pub unsafe fn Invoke(
27572        &self,
27573        errorcode: windows_core::HRESULT,
27574        result: COREWEBVIEW2_PRINT_STATUS,
27575    ) -> windows_core::Result<()> {
27576        unsafe {
27577            (windows_core::Interface::vtable(self).Invoke)(
27578                windows_core::Interface::as_raw(self),
27579                errorcode,
27580                result,
27581            )
27582            .ok()
27583        }
27584    }
27585}
27586#[repr(C)]
27587#[doc(hidden)]
27588pub struct ICoreWebView2PrintCompletedHandler_Vtbl {
27589    pub base__: windows_core::IUnknown_Vtbl,
27590    pub Invoke: unsafe extern "system" fn(
27591        *mut core::ffi::c_void,
27592        windows_core::HRESULT,
27593        COREWEBVIEW2_PRINT_STATUS,
27594    ) -> windows_core::HRESULT,
27595}
27596pub trait ICoreWebView2PrintCompletedHandler_Impl: windows_core::IUnknownImpl {
27597    fn Invoke(
27598        &self,
27599        errorcode: windows_core::HRESULT,
27600        result: COREWEBVIEW2_PRINT_STATUS,
27601    ) -> windows_core::Result<()>;
27602}
27603impl ICoreWebView2PrintCompletedHandler_Vtbl {
27604    pub const fn new<Identity: ICoreWebView2PrintCompletedHandler_Impl, const OFFSET: isize>(
27605    ) -> Self {
27606        unsafe extern "system" fn Invoke<
27607            Identity: ICoreWebView2PrintCompletedHandler_Impl,
27608            const OFFSET: isize,
27609        >(
27610            this: *mut core::ffi::c_void,
27611            errorcode: windows_core::HRESULT,
27612            result: COREWEBVIEW2_PRINT_STATUS,
27613        ) -> windows_core::HRESULT {
27614            unsafe {
27615                let this: &Identity =
27616                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27617                ICoreWebView2PrintCompletedHandler_Impl::Invoke(
27618                    this,
27619                    core::mem::transmute_copy(&errorcode),
27620                    core::mem::transmute_copy(&result),
27621                )
27622                .into()
27623            }
27624        }
27625        Self {
27626            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
27627            Invoke: Invoke::<Identity, OFFSET>,
27628        }
27629    }
27630    pub fn matches(iid: &windows_core::GUID) -> bool {
27631        iid == &<ICoreWebView2PrintCompletedHandler as windows_core::Interface>::IID
27632    }
27633}
27634impl windows_core::RuntimeName for ICoreWebView2PrintCompletedHandler {}
27635windows_core::imp::define_interface!(
27636    ICoreWebView2PrintSettings,
27637    ICoreWebView2PrintSettings_Vtbl,
27638    0x377f3721_c74e_48ca_8db1_df68e51d60e2
27639);
27640windows_core::imp::interface_hierarchy!(ICoreWebView2PrintSettings, windows_core::IUnknown);
27641impl ICoreWebView2PrintSettings {
27642    pub unsafe fn Orientation(
27643        &self,
27644        orientation: *mut COREWEBVIEW2_PRINT_ORIENTATION,
27645    ) -> windows_core::Result<()> {
27646        unsafe {
27647            (windows_core::Interface::vtable(self).Orientation)(
27648                windows_core::Interface::as_raw(self),
27649                orientation as _,
27650            )
27651            .ok()
27652        }
27653    }
27654    pub unsafe fn SetOrientation(
27655        &self,
27656        orientation: COREWEBVIEW2_PRINT_ORIENTATION,
27657    ) -> windows_core::Result<()> {
27658        unsafe {
27659            (windows_core::Interface::vtable(self).SetOrientation)(
27660                windows_core::Interface::as_raw(self),
27661                orientation,
27662            )
27663            .ok()
27664        }
27665    }
27666    pub unsafe fn ScaleFactor(&self, scalefactor: *mut f64) -> windows_core::Result<()> {
27667        unsafe {
27668            (windows_core::Interface::vtable(self).ScaleFactor)(
27669                windows_core::Interface::as_raw(self),
27670                scalefactor as _,
27671            )
27672            .ok()
27673        }
27674    }
27675    pub unsafe fn SetScaleFactor(&self, scalefactor: f64) -> windows_core::Result<()> {
27676        unsafe {
27677            (windows_core::Interface::vtable(self).SetScaleFactor)(
27678                windows_core::Interface::as_raw(self),
27679                scalefactor,
27680            )
27681            .ok()
27682        }
27683    }
27684    pub unsafe fn PageWidth(&self, pagewidth: *mut f64) -> windows_core::Result<()> {
27685        unsafe {
27686            (windows_core::Interface::vtable(self).PageWidth)(
27687                windows_core::Interface::as_raw(self),
27688                pagewidth as _,
27689            )
27690            .ok()
27691        }
27692    }
27693    pub unsafe fn SetPageWidth(&self, pagewidth: f64) -> windows_core::Result<()> {
27694        unsafe {
27695            (windows_core::Interface::vtable(self).SetPageWidth)(
27696                windows_core::Interface::as_raw(self),
27697                pagewidth,
27698            )
27699            .ok()
27700        }
27701    }
27702    pub unsafe fn PageHeight(&self, pageheight: *mut f64) -> windows_core::Result<()> {
27703        unsafe {
27704            (windows_core::Interface::vtable(self).PageHeight)(
27705                windows_core::Interface::as_raw(self),
27706                pageheight as _,
27707            )
27708            .ok()
27709        }
27710    }
27711    pub unsafe fn SetPageHeight(&self, pageheight: f64) -> windows_core::Result<()> {
27712        unsafe {
27713            (windows_core::Interface::vtable(self).SetPageHeight)(
27714                windows_core::Interface::as_raw(self),
27715                pageheight,
27716            )
27717            .ok()
27718        }
27719    }
27720    pub unsafe fn MarginTop(&self, margintop: *mut f64) -> windows_core::Result<()> {
27721        unsafe {
27722            (windows_core::Interface::vtable(self).MarginTop)(
27723                windows_core::Interface::as_raw(self),
27724                margintop as _,
27725            )
27726            .ok()
27727        }
27728    }
27729    pub unsafe fn SetMarginTop(&self, margintop: f64) -> windows_core::Result<()> {
27730        unsafe {
27731            (windows_core::Interface::vtable(self).SetMarginTop)(
27732                windows_core::Interface::as_raw(self),
27733                margintop,
27734            )
27735            .ok()
27736        }
27737    }
27738    pub unsafe fn MarginBottom(&self, marginbottom: *mut f64) -> windows_core::Result<()> {
27739        unsafe {
27740            (windows_core::Interface::vtable(self).MarginBottom)(
27741                windows_core::Interface::as_raw(self),
27742                marginbottom as _,
27743            )
27744            .ok()
27745        }
27746    }
27747    pub unsafe fn SetMarginBottom(&self, marginbottom: f64) -> windows_core::Result<()> {
27748        unsafe {
27749            (windows_core::Interface::vtable(self).SetMarginBottom)(
27750                windows_core::Interface::as_raw(self),
27751                marginbottom,
27752            )
27753            .ok()
27754        }
27755    }
27756    pub unsafe fn MarginLeft(&self, marginleft: *mut f64) -> windows_core::Result<()> {
27757        unsafe {
27758            (windows_core::Interface::vtable(self).MarginLeft)(
27759                windows_core::Interface::as_raw(self),
27760                marginleft as _,
27761            )
27762            .ok()
27763        }
27764    }
27765    pub unsafe fn SetMarginLeft(&self, marginleft: f64) -> windows_core::Result<()> {
27766        unsafe {
27767            (windows_core::Interface::vtable(self).SetMarginLeft)(
27768                windows_core::Interface::as_raw(self),
27769                marginleft,
27770            )
27771            .ok()
27772        }
27773    }
27774    pub unsafe fn MarginRight(&self, marginright: *mut f64) -> windows_core::Result<()> {
27775        unsafe {
27776            (windows_core::Interface::vtable(self).MarginRight)(
27777                windows_core::Interface::as_raw(self),
27778                marginright as _,
27779            )
27780            .ok()
27781        }
27782    }
27783    pub unsafe fn SetMarginRight(&self, marginright: f64) -> windows_core::Result<()> {
27784        unsafe {
27785            (windows_core::Interface::vtable(self).SetMarginRight)(
27786                windows_core::Interface::as_raw(self),
27787                marginright,
27788            )
27789            .ok()
27790        }
27791    }
27792    pub unsafe fn ShouldPrintBackgrounds(
27793        &self,
27794        shouldprintbackgrounds: *mut windows_core::BOOL,
27795    ) -> windows_core::Result<()> {
27796        unsafe {
27797            (windows_core::Interface::vtable(self).ShouldPrintBackgrounds)(
27798                windows_core::Interface::as_raw(self),
27799                shouldprintbackgrounds as _,
27800            )
27801            .ok()
27802        }
27803    }
27804    pub unsafe fn SetShouldPrintBackgrounds(
27805        &self,
27806        shouldprintbackgrounds: bool,
27807    ) -> windows_core::Result<()> {
27808        unsafe {
27809            (windows_core::Interface::vtable(self).SetShouldPrintBackgrounds)(
27810                windows_core::Interface::as_raw(self),
27811                shouldprintbackgrounds.into(),
27812            )
27813            .ok()
27814        }
27815    }
27816    pub unsafe fn ShouldPrintSelectionOnly(
27817        &self,
27818        shouldprintselectiononly: *mut windows_core::BOOL,
27819    ) -> windows_core::Result<()> {
27820        unsafe {
27821            (windows_core::Interface::vtable(self).ShouldPrintSelectionOnly)(
27822                windows_core::Interface::as_raw(self),
27823                shouldprintselectiononly as _,
27824            )
27825            .ok()
27826        }
27827    }
27828    pub unsafe fn SetShouldPrintSelectionOnly(
27829        &self,
27830        shouldprintselectiononly: bool,
27831    ) -> windows_core::Result<()> {
27832        unsafe {
27833            (windows_core::Interface::vtable(self).SetShouldPrintSelectionOnly)(
27834                windows_core::Interface::as_raw(self),
27835                shouldprintselectiononly.into(),
27836            )
27837            .ok()
27838        }
27839    }
27840    pub unsafe fn ShouldPrintHeaderAndFooter(
27841        &self,
27842        shouldprintheaderandfooter: *mut windows_core::BOOL,
27843    ) -> windows_core::Result<()> {
27844        unsafe {
27845            (windows_core::Interface::vtable(self).ShouldPrintHeaderAndFooter)(
27846                windows_core::Interface::as_raw(self),
27847                shouldprintheaderandfooter as _,
27848            )
27849            .ok()
27850        }
27851    }
27852    pub unsafe fn SetShouldPrintHeaderAndFooter(
27853        &self,
27854        shouldprintheaderandfooter: bool,
27855    ) -> windows_core::Result<()> {
27856        unsafe {
27857            (windows_core::Interface::vtable(self).SetShouldPrintHeaderAndFooter)(
27858                windows_core::Interface::as_raw(self),
27859                shouldprintheaderandfooter.into(),
27860            )
27861            .ok()
27862        }
27863    }
27864    pub unsafe fn HeaderTitle(
27865        &self,
27866        headertitle: *mut windows_core::PWSTR,
27867    ) -> windows_core::Result<()> {
27868        unsafe {
27869            (windows_core::Interface::vtable(self).HeaderTitle)(
27870                windows_core::Interface::as_raw(self),
27871                headertitle as _,
27872            )
27873            .ok()
27874        }
27875    }
27876    pub unsafe fn SetHeaderTitle<P0>(&self, headertitle: P0) -> windows_core::Result<()>
27877    where
27878        P0: windows_core::Param<windows_core::PCWSTR>,
27879    {
27880        unsafe {
27881            (windows_core::Interface::vtable(self).SetHeaderTitle)(
27882                windows_core::Interface::as_raw(self),
27883                headertitle.param().abi(),
27884            )
27885            .ok()
27886        }
27887    }
27888    pub unsafe fn FooterUri(
27889        &self,
27890        footeruri: *mut windows_core::PWSTR,
27891    ) -> windows_core::Result<()> {
27892        unsafe {
27893            (windows_core::Interface::vtable(self).FooterUri)(
27894                windows_core::Interface::as_raw(self),
27895                footeruri as _,
27896            )
27897            .ok()
27898        }
27899    }
27900    pub unsafe fn SetFooterUri<P0>(&self, footeruri: P0) -> windows_core::Result<()>
27901    where
27902        P0: windows_core::Param<windows_core::PCWSTR>,
27903    {
27904        unsafe {
27905            (windows_core::Interface::vtable(self).SetFooterUri)(
27906                windows_core::Interface::as_raw(self),
27907                footeruri.param().abi(),
27908            )
27909            .ok()
27910        }
27911    }
27912}
27913#[repr(C)]
27914#[doc(hidden)]
27915pub struct ICoreWebView2PrintSettings_Vtbl {
27916    pub base__: windows_core::IUnknown_Vtbl,
27917    pub Orientation: unsafe extern "system" fn(
27918        *mut core::ffi::c_void,
27919        *mut COREWEBVIEW2_PRINT_ORIENTATION,
27920    ) -> windows_core::HRESULT,
27921    pub SetOrientation: unsafe extern "system" fn(
27922        *mut core::ffi::c_void,
27923        COREWEBVIEW2_PRINT_ORIENTATION,
27924    ) -> windows_core::HRESULT,
27925    pub ScaleFactor:
27926        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27927    pub SetScaleFactor:
27928        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27929    pub PageWidth:
27930        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27931    pub SetPageWidth:
27932        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27933    pub PageHeight:
27934        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27935    pub SetPageHeight:
27936        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27937    pub MarginTop:
27938        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27939    pub SetMarginTop:
27940        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27941    pub MarginBottom:
27942        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27943    pub SetMarginBottom:
27944        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27945    pub MarginLeft:
27946        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27947    pub SetMarginLeft:
27948        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27949    pub MarginRight:
27950        unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
27951    pub SetMarginRight:
27952        unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
27953    pub ShouldPrintBackgrounds: unsafe extern "system" fn(
27954        *mut core::ffi::c_void,
27955        *mut windows_core::BOOL,
27956    ) -> windows_core::HRESULT,
27957    pub SetShouldPrintBackgrounds: unsafe extern "system" fn(
27958        *mut core::ffi::c_void,
27959        windows_core::BOOL,
27960    ) -> windows_core::HRESULT,
27961    pub ShouldPrintSelectionOnly: unsafe extern "system" fn(
27962        *mut core::ffi::c_void,
27963        *mut windows_core::BOOL,
27964    ) -> windows_core::HRESULT,
27965    pub SetShouldPrintSelectionOnly: unsafe extern "system" fn(
27966        *mut core::ffi::c_void,
27967        windows_core::BOOL,
27968    ) -> windows_core::HRESULT,
27969    pub ShouldPrintHeaderAndFooter: unsafe extern "system" fn(
27970        *mut core::ffi::c_void,
27971        *mut windows_core::BOOL,
27972    ) -> windows_core::HRESULT,
27973    pub SetShouldPrintHeaderAndFooter: unsafe extern "system" fn(
27974        *mut core::ffi::c_void,
27975        windows_core::BOOL,
27976    ) -> windows_core::HRESULT,
27977    pub HeaderTitle: unsafe extern "system" fn(
27978        *mut core::ffi::c_void,
27979        *mut windows_core::PWSTR,
27980    ) -> windows_core::HRESULT,
27981    pub SetHeaderTitle: unsafe extern "system" fn(
27982        *mut core::ffi::c_void,
27983        windows_core::PCWSTR,
27984    ) -> windows_core::HRESULT,
27985    pub FooterUri: unsafe extern "system" fn(
27986        *mut core::ffi::c_void,
27987        *mut windows_core::PWSTR,
27988    ) -> windows_core::HRESULT,
27989    pub SetFooterUri: unsafe extern "system" fn(
27990        *mut core::ffi::c_void,
27991        windows_core::PCWSTR,
27992    ) -> windows_core::HRESULT,
27993}
27994pub trait ICoreWebView2PrintSettings_Impl: windows_core::IUnknownImpl {
27995    fn Orientation(
27996        &self,
27997        orientation: *mut COREWEBVIEW2_PRINT_ORIENTATION,
27998    ) -> windows_core::Result<()>;
27999    fn SetOrientation(
28000        &self,
28001        orientation: COREWEBVIEW2_PRINT_ORIENTATION,
28002    ) -> windows_core::Result<()>;
28003    fn ScaleFactor(&self, scalefactor: *mut f64) -> windows_core::Result<()>;
28004    fn SetScaleFactor(&self, scalefactor: f64) -> windows_core::Result<()>;
28005    fn PageWidth(&self, pagewidth: *mut f64) -> windows_core::Result<()>;
28006    fn SetPageWidth(&self, pagewidth: f64) -> windows_core::Result<()>;
28007    fn PageHeight(&self, pageheight: *mut f64) -> windows_core::Result<()>;
28008    fn SetPageHeight(&self, pageheight: f64) -> windows_core::Result<()>;
28009    fn MarginTop(&self, margintop: *mut f64) -> windows_core::Result<()>;
28010    fn SetMarginTop(&self, margintop: f64) -> windows_core::Result<()>;
28011    fn MarginBottom(&self, marginbottom: *mut f64) -> windows_core::Result<()>;
28012    fn SetMarginBottom(&self, marginbottom: f64) -> windows_core::Result<()>;
28013    fn MarginLeft(&self, marginleft: *mut f64) -> windows_core::Result<()>;
28014    fn SetMarginLeft(&self, marginleft: f64) -> windows_core::Result<()>;
28015    fn MarginRight(&self, marginright: *mut f64) -> windows_core::Result<()>;
28016    fn SetMarginRight(&self, marginright: f64) -> windows_core::Result<()>;
28017    fn ShouldPrintBackgrounds(
28018        &self,
28019        shouldprintbackgrounds: *mut windows_core::BOOL,
28020    ) -> windows_core::Result<()>;
28021    fn SetShouldPrintBackgrounds(
28022        &self,
28023        shouldprintbackgrounds: windows_core::BOOL,
28024    ) -> windows_core::Result<()>;
28025    fn ShouldPrintSelectionOnly(
28026        &self,
28027        shouldprintselectiononly: *mut windows_core::BOOL,
28028    ) -> windows_core::Result<()>;
28029    fn SetShouldPrintSelectionOnly(
28030        &self,
28031        shouldprintselectiononly: windows_core::BOOL,
28032    ) -> windows_core::Result<()>;
28033    fn ShouldPrintHeaderAndFooter(
28034        &self,
28035        shouldprintheaderandfooter: *mut windows_core::BOOL,
28036    ) -> windows_core::Result<()>;
28037    fn SetShouldPrintHeaderAndFooter(
28038        &self,
28039        shouldprintheaderandfooter: windows_core::BOOL,
28040    ) -> windows_core::Result<()>;
28041    fn HeaderTitle(&self, headertitle: *mut windows_core::PWSTR) -> windows_core::Result<()>;
28042    fn SetHeaderTitle(&self, headertitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
28043    fn FooterUri(&self, footeruri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
28044    fn SetFooterUri(&self, footeruri: &windows_core::PCWSTR) -> windows_core::Result<()>;
28045}
28046impl ICoreWebView2PrintSettings_Vtbl {
28047    pub const fn new<Identity: ICoreWebView2PrintSettings_Impl, const OFFSET: isize>() -> Self {
28048        unsafe extern "system" fn Orientation<
28049            Identity: ICoreWebView2PrintSettings_Impl,
28050            const OFFSET: isize,
28051        >(
28052            this: *mut core::ffi::c_void,
28053            orientation: *mut COREWEBVIEW2_PRINT_ORIENTATION,
28054        ) -> windows_core::HRESULT {
28055            unsafe {
28056                let this: &Identity =
28057                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28058                ICoreWebView2PrintSettings_Impl::Orientation(
28059                    this,
28060                    core::mem::transmute_copy(&orientation),
28061                )
28062                .into()
28063            }
28064        }
28065        unsafe extern "system" fn SetOrientation<
28066            Identity: ICoreWebView2PrintSettings_Impl,
28067            const OFFSET: isize,
28068        >(
28069            this: *mut core::ffi::c_void,
28070            orientation: COREWEBVIEW2_PRINT_ORIENTATION,
28071        ) -> windows_core::HRESULT {
28072            unsafe {
28073                let this: &Identity =
28074                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28075                ICoreWebView2PrintSettings_Impl::SetOrientation(
28076                    this,
28077                    core::mem::transmute_copy(&orientation),
28078                )
28079                .into()
28080            }
28081        }
28082        unsafe extern "system" fn ScaleFactor<
28083            Identity: ICoreWebView2PrintSettings_Impl,
28084            const OFFSET: isize,
28085        >(
28086            this: *mut core::ffi::c_void,
28087            scalefactor: *mut f64,
28088        ) -> windows_core::HRESULT {
28089            unsafe {
28090                let this: &Identity =
28091                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28092                ICoreWebView2PrintSettings_Impl::ScaleFactor(
28093                    this,
28094                    core::mem::transmute_copy(&scalefactor),
28095                )
28096                .into()
28097            }
28098        }
28099        unsafe extern "system" fn SetScaleFactor<
28100            Identity: ICoreWebView2PrintSettings_Impl,
28101            const OFFSET: isize,
28102        >(
28103            this: *mut core::ffi::c_void,
28104            scalefactor: f64,
28105        ) -> windows_core::HRESULT {
28106            unsafe {
28107                let this: &Identity =
28108                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28109                ICoreWebView2PrintSettings_Impl::SetScaleFactor(
28110                    this,
28111                    core::mem::transmute_copy(&scalefactor),
28112                )
28113                .into()
28114            }
28115        }
28116        unsafe extern "system" fn PageWidth<
28117            Identity: ICoreWebView2PrintSettings_Impl,
28118            const OFFSET: isize,
28119        >(
28120            this: *mut core::ffi::c_void,
28121            pagewidth: *mut f64,
28122        ) -> windows_core::HRESULT {
28123            unsafe {
28124                let this: &Identity =
28125                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28126                ICoreWebView2PrintSettings_Impl::PageWidth(
28127                    this,
28128                    core::mem::transmute_copy(&pagewidth),
28129                )
28130                .into()
28131            }
28132        }
28133        unsafe extern "system" fn SetPageWidth<
28134            Identity: ICoreWebView2PrintSettings_Impl,
28135            const OFFSET: isize,
28136        >(
28137            this: *mut core::ffi::c_void,
28138            pagewidth: f64,
28139        ) -> windows_core::HRESULT {
28140            unsafe {
28141                let this: &Identity =
28142                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28143                ICoreWebView2PrintSettings_Impl::SetPageWidth(
28144                    this,
28145                    core::mem::transmute_copy(&pagewidth),
28146                )
28147                .into()
28148            }
28149        }
28150        unsafe extern "system" fn PageHeight<
28151            Identity: ICoreWebView2PrintSettings_Impl,
28152            const OFFSET: isize,
28153        >(
28154            this: *mut core::ffi::c_void,
28155            pageheight: *mut f64,
28156        ) -> windows_core::HRESULT {
28157            unsafe {
28158                let this: &Identity =
28159                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28160                ICoreWebView2PrintSettings_Impl::PageHeight(
28161                    this,
28162                    core::mem::transmute_copy(&pageheight),
28163                )
28164                .into()
28165            }
28166        }
28167        unsafe extern "system" fn SetPageHeight<
28168            Identity: ICoreWebView2PrintSettings_Impl,
28169            const OFFSET: isize,
28170        >(
28171            this: *mut core::ffi::c_void,
28172            pageheight: f64,
28173        ) -> windows_core::HRESULT {
28174            unsafe {
28175                let this: &Identity =
28176                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28177                ICoreWebView2PrintSettings_Impl::SetPageHeight(
28178                    this,
28179                    core::mem::transmute_copy(&pageheight),
28180                )
28181                .into()
28182            }
28183        }
28184        unsafe extern "system" fn MarginTop<
28185            Identity: ICoreWebView2PrintSettings_Impl,
28186            const OFFSET: isize,
28187        >(
28188            this: *mut core::ffi::c_void,
28189            margintop: *mut f64,
28190        ) -> windows_core::HRESULT {
28191            unsafe {
28192                let this: &Identity =
28193                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28194                ICoreWebView2PrintSettings_Impl::MarginTop(
28195                    this,
28196                    core::mem::transmute_copy(&margintop),
28197                )
28198                .into()
28199            }
28200        }
28201        unsafe extern "system" fn SetMarginTop<
28202            Identity: ICoreWebView2PrintSettings_Impl,
28203            const OFFSET: isize,
28204        >(
28205            this: *mut core::ffi::c_void,
28206            margintop: f64,
28207        ) -> windows_core::HRESULT {
28208            unsafe {
28209                let this: &Identity =
28210                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28211                ICoreWebView2PrintSettings_Impl::SetMarginTop(
28212                    this,
28213                    core::mem::transmute_copy(&margintop),
28214                )
28215                .into()
28216            }
28217        }
28218        unsafe extern "system" fn MarginBottom<
28219            Identity: ICoreWebView2PrintSettings_Impl,
28220            const OFFSET: isize,
28221        >(
28222            this: *mut core::ffi::c_void,
28223            marginbottom: *mut f64,
28224        ) -> windows_core::HRESULT {
28225            unsafe {
28226                let this: &Identity =
28227                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28228                ICoreWebView2PrintSettings_Impl::MarginBottom(
28229                    this,
28230                    core::mem::transmute_copy(&marginbottom),
28231                )
28232                .into()
28233            }
28234        }
28235        unsafe extern "system" fn SetMarginBottom<
28236            Identity: ICoreWebView2PrintSettings_Impl,
28237            const OFFSET: isize,
28238        >(
28239            this: *mut core::ffi::c_void,
28240            marginbottom: f64,
28241        ) -> windows_core::HRESULT {
28242            unsafe {
28243                let this: &Identity =
28244                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28245                ICoreWebView2PrintSettings_Impl::SetMarginBottom(
28246                    this,
28247                    core::mem::transmute_copy(&marginbottom),
28248                )
28249                .into()
28250            }
28251        }
28252        unsafe extern "system" fn MarginLeft<
28253            Identity: ICoreWebView2PrintSettings_Impl,
28254            const OFFSET: isize,
28255        >(
28256            this: *mut core::ffi::c_void,
28257            marginleft: *mut f64,
28258        ) -> windows_core::HRESULT {
28259            unsafe {
28260                let this: &Identity =
28261                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28262                ICoreWebView2PrintSettings_Impl::MarginLeft(
28263                    this,
28264                    core::mem::transmute_copy(&marginleft),
28265                )
28266                .into()
28267            }
28268        }
28269        unsafe extern "system" fn SetMarginLeft<
28270            Identity: ICoreWebView2PrintSettings_Impl,
28271            const OFFSET: isize,
28272        >(
28273            this: *mut core::ffi::c_void,
28274            marginleft: f64,
28275        ) -> windows_core::HRESULT {
28276            unsafe {
28277                let this: &Identity =
28278                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28279                ICoreWebView2PrintSettings_Impl::SetMarginLeft(
28280                    this,
28281                    core::mem::transmute_copy(&marginleft),
28282                )
28283                .into()
28284            }
28285        }
28286        unsafe extern "system" fn MarginRight<
28287            Identity: ICoreWebView2PrintSettings_Impl,
28288            const OFFSET: isize,
28289        >(
28290            this: *mut core::ffi::c_void,
28291            marginright: *mut f64,
28292        ) -> windows_core::HRESULT {
28293            unsafe {
28294                let this: &Identity =
28295                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28296                ICoreWebView2PrintSettings_Impl::MarginRight(
28297                    this,
28298                    core::mem::transmute_copy(&marginright),
28299                )
28300                .into()
28301            }
28302        }
28303        unsafe extern "system" fn SetMarginRight<
28304            Identity: ICoreWebView2PrintSettings_Impl,
28305            const OFFSET: isize,
28306        >(
28307            this: *mut core::ffi::c_void,
28308            marginright: f64,
28309        ) -> windows_core::HRESULT {
28310            unsafe {
28311                let this: &Identity =
28312                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28313                ICoreWebView2PrintSettings_Impl::SetMarginRight(
28314                    this,
28315                    core::mem::transmute_copy(&marginright),
28316                )
28317                .into()
28318            }
28319        }
28320        unsafe extern "system" fn ShouldPrintBackgrounds<
28321            Identity: ICoreWebView2PrintSettings_Impl,
28322            const OFFSET: isize,
28323        >(
28324            this: *mut core::ffi::c_void,
28325            shouldprintbackgrounds: *mut windows_core::BOOL,
28326        ) -> windows_core::HRESULT {
28327            unsafe {
28328                let this: &Identity =
28329                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28330                ICoreWebView2PrintSettings_Impl::ShouldPrintBackgrounds(
28331                    this,
28332                    core::mem::transmute_copy(&shouldprintbackgrounds),
28333                )
28334                .into()
28335            }
28336        }
28337        unsafe extern "system" fn SetShouldPrintBackgrounds<
28338            Identity: ICoreWebView2PrintSettings_Impl,
28339            const OFFSET: isize,
28340        >(
28341            this: *mut core::ffi::c_void,
28342            shouldprintbackgrounds: windows_core::BOOL,
28343        ) -> windows_core::HRESULT {
28344            unsafe {
28345                let this: &Identity =
28346                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28347                ICoreWebView2PrintSettings_Impl::SetShouldPrintBackgrounds(
28348                    this,
28349                    core::mem::transmute_copy(&shouldprintbackgrounds),
28350                )
28351                .into()
28352            }
28353        }
28354        unsafe extern "system" fn ShouldPrintSelectionOnly<
28355            Identity: ICoreWebView2PrintSettings_Impl,
28356            const OFFSET: isize,
28357        >(
28358            this: *mut core::ffi::c_void,
28359            shouldprintselectiononly: *mut windows_core::BOOL,
28360        ) -> windows_core::HRESULT {
28361            unsafe {
28362                let this: &Identity =
28363                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28364                ICoreWebView2PrintSettings_Impl::ShouldPrintSelectionOnly(
28365                    this,
28366                    core::mem::transmute_copy(&shouldprintselectiononly),
28367                )
28368                .into()
28369            }
28370        }
28371        unsafe extern "system" fn SetShouldPrintSelectionOnly<
28372            Identity: ICoreWebView2PrintSettings_Impl,
28373            const OFFSET: isize,
28374        >(
28375            this: *mut core::ffi::c_void,
28376            shouldprintselectiononly: windows_core::BOOL,
28377        ) -> windows_core::HRESULT {
28378            unsafe {
28379                let this: &Identity =
28380                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28381                ICoreWebView2PrintSettings_Impl::SetShouldPrintSelectionOnly(
28382                    this,
28383                    core::mem::transmute_copy(&shouldprintselectiononly),
28384                )
28385                .into()
28386            }
28387        }
28388        unsafe extern "system" fn ShouldPrintHeaderAndFooter<
28389            Identity: ICoreWebView2PrintSettings_Impl,
28390            const OFFSET: isize,
28391        >(
28392            this: *mut core::ffi::c_void,
28393            shouldprintheaderandfooter: *mut windows_core::BOOL,
28394        ) -> windows_core::HRESULT {
28395            unsafe {
28396                let this: &Identity =
28397                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28398                ICoreWebView2PrintSettings_Impl::ShouldPrintHeaderAndFooter(
28399                    this,
28400                    core::mem::transmute_copy(&shouldprintheaderandfooter),
28401                )
28402                .into()
28403            }
28404        }
28405        unsafe extern "system" fn SetShouldPrintHeaderAndFooter<
28406            Identity: ICoreWebView2PrintSettings_Impl,
28407            const OFFSET: isize,
28408        >(
28409            this: *mut core::ffi::c_void,
28410            shouldprintheaderandfooter: windows_core::BOOL,
28411        ) -> windows_core::HRESULT {
28412            unsafe {
28413                let this: &Identity =
28414                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28415                ICoreWebView2PrintSettings_Impl::SetShouldPrintHeaderAndFooter(
28416                    this,
28417                    core::mem::transmute_copy(&shouldprintheaderandfooter),
28418                )
28419                .into()
28420            }
28421        }
28422        unsafe extern "system" fn HeaderTitle<
28423            Identity: ICoreWebView2PrintSettings_Impl,
28424            const OFFSET: isize,
28425        >(
28426            this: *mut core::ffi::c_void,
28427            headertitle: *mut windows_core::PWSTR,
28428        ) -> windows_core::HRESULT {
28429            unsafe {
28430                let this: &Identity =
28431                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28432                ICoreWebView2PrintSettings_Impl::HeaderTitle(
28433                    this,
28434                    core::mem::transmute_copy(&headertitle),
28435                )
28436                .into()
28437            }
28438        }
28439        unsafe extern "system" fn SetHeaderTitle<
28440            Identity: ICoreWebView2PrintSettings_Impl,
28441            const OFFSET: isize,
28442        >(
28443            this: *mut core::ffi::c_void,
28444            headertitle: windows_core::PCWSTR,
28445        ) -> windows_core::HRESULT {
28446            unsafe {
28447                let this: &Identity =
28448                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28449                ICoreWebView2PrintSettings_Impl::SetHeaderTitle(
28450                    this,
28451                    core::mem::transmute(&headertitle),
28452                )
28453                .into()
28454            }
28455        }
28456        unsafe extern "system" fn FooterUri<
28457            Identity: ICoreWebView2PrintSettings_Impl,
28458            const OFFSET: isize,
28459        >(
28460            this: *mut core::ffi::c_void,
28461            footeruri: *mut windows_core::PWSTR,
28462        ) -> windows_core::HRESULT {
28463            unsafe {
28464                let this: &Identity =
28465                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28466                ICoreWebView2PrintSettings_Impl::FooterUri(
28467                    this,
28468                    core::mem::transmute_copy(&footeruri),
28469                )
28470                .into()
28471            }
28472        }
28473        unsafe extern "system" fn SetFooterUri<
28474            Identity: ICoreWebView2PrintSettings_Impl,
28475            const OFFSET: isize,
28476        >(
28477            this: *mut core::ffi::c_void,
28478            footeruri: windows_core::PCWSTR,
28479        ) -> windows_core::HRESULT {
28480            unsafe {
28481                let this: &Identity =
28482                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28483                ICoreWebView2PrintSettings_Impl::SetFooterUri(
28484                    this,
28485                    core::mem::transmute(&footeruri),
28486                )
28487                .into()
28488            }
28489        }
28490        Self {
28491            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
28492            Orientation: Orientation::<Identity, OFFSET>,
28493            SetOrientation: SetOrientation::<Identity, OFFSET>,
28494            ScaleFactor: ScaleFactor::<Identity, OFFSET>,
28495            SetScaleFactor: SetScaleFactor::<Identity, OFFSET>,
28496            PageWidth: PageWidth::<Identity, OFFSET>,
28497            SetPageWidth: SetPageWidth::<Identity, OFFSET>,
28498            PageHeight: PageHeight::<Identity, OFFSET>,
28499            SetPageHeight: SetPageHeight::<Identity, OFFSET>,
28500            MarginTop: MarginTop::<Identity, OFFSET>,
28501            SetMarginTop: SetMarginTop::<Identity, OFFSET>,
28502            MarginBottom: MarginBottom::<Identity, OFFSET>,
28503            SetMarginBottom: SetMarginBottom::<Identity, OFFSET>,
28504            MarginLeft: MarginLeft::<Identity, OFFSET>,
28505            SetMarginLeft: SetMarginLeft::<Identity, OFFSET>,
28506            MarginRight: MarginRight::<Identity, OFFSET>,
28507            SetMarginRight: SetMarginRight::<Identity, OFFSET>,
28508            ShouldPrintBackgrounds: ShouldPrintBackgrounds::<Identity, OFFSET>,
28509            SetShouldPrintBackgrounds: SetShouldPrintBackgrounds::<Identity, OFFSET>,
28510            ShouldPrintSelectionOnly: ShouldPrintSelectionOnly::<Identity, OFFSET>,
28511            SetShouldPrintSelectionOnly: SetShouldPrintSelectionOnly::<Identity, OFFSET>,
28512            ShouldPrintHeaderAndFooter: ShouldPrintHeaderAndFooter::<Identity, OFFSET>,
28513            SetShouldPrintHeaderAndFooter: SetShouldPrintHeaderAndFooter::<Identity, OFFSET>,
28514            HeaderTitle: HeaderTitle::<Identity, OFFSET>,
28515            SetHeaderTitle: SetHeaderTitle::<Identity, OFFSET>,
28516            FooterUri: FooterUri::<Identity, OFFSET>,
28517            SetFooterUri: SetFooterUri::<Identity, OFFSET>,
28518        }
28519    }
28520    pub fn matches(iid: &windows_core::GUID) -> bool {
28521        iid == &<ICoreWebView2PrintSettings as windows_core::Interface>::IID
28522    }
28523}
28524impl windows_core::RuntimeName for ICoreWebView2PrintSettings {}
28525windows_core::imp::define_interface!(
28526    ICoreWebView2PrintSettings2,
28527    ICoreWebView2PrintSettings2_Vtbl,
28528    0xca7f0e1f_3484_41d1_8c1a_65cd44a63f8d
28529);
28530impl core::ops::Deref for ICoreWebView2PrintSettings2 {
28531    type Target = ICoreWebView2PrintSettings;
28532    fn deref(&self) -> &Self::Target {
28533        unsafe { core::mem::transmute(self) }
28534    }
28535}
28536windows_core::imp::interface_hierarchy!(
28537    ICoreWebView2PrintSettings2,
28538    windows_core::IUnknown,
28539    ICoreWebView2PrintSettings
28540);
28541impl ICoreWebView2PrintSettings2 {
28542    pub unsafe fn PageRanges(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
28543        unsafe {
28544            (windows_core::Interface::vtable(self).PageRanges)(
28545                windows_core::Interface::as_raw(self),
28546                value as _,
28547            )
28548            .ok()
28549        }
28550    }
28551    pub unsafe fn SetPageRanges<P0>(&self, value: P0) -> windows_core::Result<()>
28552    where
28553        P0: windows_core::Param<windows_core::PCWSTR>,
28554    {
28555        unsafe {
28556            (windows_core::Interface::vtable(self).SetPageRanges)(
28557                windows_core::Interface::as_raw(self),
28558                value.param().abi(),
28559            )
28560            .ok()
28561        }
28562    }
28563    pub unsafe fn PagesPerSide(&self, value: *mut i32) -> windows_core::Result<()> {
28564        unsafe {
28565            (windows_core::Interface::vtable(self).PagesPerSide)(
28566                windows_core::Interface::as_raw(self),
28567                value as _,
28568            )
28569            .ok()
28570        }
28571    }
28572    pub unsafe fn SetPagesPerSide(&self, value: i32) -> windows_core::Result<()> {
28573        unsafe {
28574            (windows_core::Interface::vtable(self).SetPagesPerSide)(
28575                windows_core::Interface::as_raw(self),
28576                value,
28577            )
28578            .ok()
28579        }
28580    }
28581    pub unsafe fn Copies(&self, value: *mut i32) -> windows_core::Result<()> {
28582        unsafe {
28583            (windows_core::Interface::vtable(self).Copies)(
28584                windows_core::Interface::as_raw(self),
28585                value as _,
28586            )
28587            .ok()
28588        }
28589    }
28590    pub unsafe fn SetCopies(&self, value: i32) -> windows_core::Result<()> {
28591        unsafe {
28592            (windows_core::Interface::vtable(self).SetCopies)(
28593                windows_core::Interface::as_raw(self),
28594                value,
28595            )
28596            .ok()
28597        }
28598    }
28599    pub unsafe fn Collation(
28600        &self,
28601        value: *mut COREWEBVIEW2_PRINT_COLLATION,
28602    ) -> windows_core::Result<()> {
28603        unsafe {
28604            (windows_core::Interface::vtable(self).Collation)(
28605                windows_core::Interface::as_raw(self),
28606                value as _,
28607            )
28608            .ok()
28609        }
28610    }
28611    pub unsafe fn SetCollation(
28612        &self,
28613        value: COREWEBVIEW2_PRINT_COLLATION,
28614    ) -> windows_core::Result<()> {
28615        unsafe {
28616            (windows_core::Interface::vtable(self).SetCollation)(
28617                windows_core::Interface::as_raw(self),
28618                value,
28619            )
28620            .ok()
28621        }
28622    }
28623    pub unsafe fn ColorMode(
28624        &self,
28625        value: *mut COREWEBVIEW2_PRINT_COLOR_MODE,
28626    ) -> windows_core::Result<()> {
28627        unsafe {
28628            (windows_core::Interface::vtable(self).ColorMode)(
28629                windows_core::Interface::as_raw(self),
28630                value as _,
28631            )
28632            .ok()
28633        }
28634    }
28635    pub unsafe fn SetColorMode(
28636        &self,
28637        value: COREWEBVIEW2_PRINT_COLOR_MODE,
28638    ) -> windows_core::Result<()> {
28639        unsafe {
28640            (windows_core::Interface::vtable(self).SetColorMode)(
28641                windows_core::Interface::as_raw(self),
28642                value,
28643            )
28644            .ok()
28645        }
28646    }
28647    pub unsafe fn Duplex(&self, value: *mut COREWEBVIEW2_PRINT_DUPLEX) -> windows_core::Result<()> {
28648        unsafe {
28649            (windows_core::Interface::vtable(self).Duplex)(
28650                windows_core::Interface::as_raw(self),
28651                value as _,
28652            )
28653            .ok()
28654        }
28655    }
28656    pub unsafe fn SetDuplex(&self, value: COREWEBVIEW2_PRINT_DUPLEX) -> windows_core::Result<()> {
28657        unsafe {
28658            (windows_core::Interface::vtable(self).SetDuplex)(
28659                windows_core::Interface::as_raw(self),
28660                value,
28661            )
28662            .ok()
28663        }
28664    }
28665    pub unsafe fn MediaSize(
28666        &self,
28667        value: *mut COREWEBVIEW2_PRINT_MEDIA_SIZE,
28668    ) -> windows_core::Result<()> {
28669        unsafe {
28670            (windows_core::Interface::vtable(self).MediaSize)(
28671                windows_core::Interface::as_raw(self),
28672                value as _,
28673            )
28674            .ok()
28675        }
28676    }
28677    pub unsafe fn SetMediaSize(
28678        &self,
28679        value: COREWEBVIEW2_PRINT_MEDIA_SIZE,
28680    ) -> windows_core::Result<()> {
28681        unsafe {
28682            (windows_core::Interface::vtable(self).SetMediaSize)(
28683                windows_core::Interface::as_raw(self),
28684                value,
28685            )
28686            .ok()
28687        }
28688    }
28689    pub unsafe fn PrinterName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
28690        unsafe {
28691            (windows_core::Interface::vtable(self).PrinterName)(
28692                windows_core::Interface::as_raw(self),
28693                value as _,
28694            )
28695            .ok()
28696        }
28697    }
28698    pub unsafe fn SetPrinterName<P0>(&self, value: P0) -> windows_core::Result<()>
28699    where
28700        P0: windows_core::Param<windows_core::PCWSTR>,
28701    {
28702        unsafe {
28703            (windows_core::Interface::vtable(self).SetPrinterName)(
28704                windows_core::Interface::as_raw(self),
28705                value.param().abi(),
28706            )
28707            .ok()
28708        }
28709    }
28710}
28711#[repr(C)]
28712#[doc(hidden)]
28713pub struct ICoreWebView2PrintSettings2_Vtbl {
28714    pub base__: ICoreWebView2PrintSettings_Vtbl,
28715    pub PageRanges: unsafe extern "system" fn(
28716        *mut core::ffi::c_void,
28717        *mut windows_core::PWSTR,
28718    ) -> windows_core::HRESULT,
28719    pub SetPageRanges: unsafe extern "system" fn(
28720        *mut core::ffi::c_void,
28721        windows_core::PCWSTR,
28722    ) -> windows_core::HRESULT,
28723    pub PagesPerSide:
28724        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
28725    pub SetPagesPerSide:
28726        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
28727    pub Copies:
28728        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
28729    pub SetCopies: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
28730    pub Collation: unsafe extern "system" fn(
28731        *mut core::ffi::c_void,
28732        *mut COREWEBVIEW2_PRINT_COLLATION,
28733    ) -> windows_core::HRESULT,
28734    pub SetCollation: unsafe extern "system" fn(
28735        *mut core::ffi::c_void,
28736        COREWEBVIEW2_PRINT_COLLATION,
28737    ) -> windows_core::HRESULT,
28738    pub ColorMode: unsafe extern "system" fn(
28739        *mut core::ffi::c_void,
28740        *mut COREWEBVIEW2_PRINT_COLOR_MODE,
28741    ) -> windows_core::HRESULT,
28742    pub SetColorMode: unsafe extern "system" fn(
28743        *mut core::ffi::c_void,
28744        COREWEBVIEW2_PRINT_COLOR_MODE,
28745    ) -> windows_core::HRESULT,
28746    pub Duplex: unsafe extern "system" fn(
28747        *mut core::ffi::c_void,
28748        *mut COREWEBVIEW2_PRINT_DUPLEX,
28749    ) -> windows_core::HRESULT,
28750    pub SetDuplex: unsafe extern "system" fn(
28751        *mut core::ffi::c_void,
28752        COREWEBVIEW2_PRINT_DUPLEX,
28753    ) -> windows_core::HRESULT,
28754    pub MediaSize: unsafe extern "system" fn(
28755        *mut core::ffi::c_void,
28756        *mut COREWEBVIEW2_PRINT_MEDIA_SIZE,
28757    ) -> windows_core::HRESULT,
28758    pub SetMediaSize: unsafe extern "system" fn(
28759        *mut core::ffi::c_void,
28760        COREWEBVIEW2_PRINT_MEDIA_SIZE,
28761    ) -> windows_core::HRESULT,
28762    pub PrinterName: unsafe extern "system" fn(
28763        *mut core::ffi::c_void,
28764        *mut windows_core::PWSTR,
28765    ) -> windows_core::HRESULT,
28766    pub SetPrinterName: unsafe extern "system" fn(
28767        *mut core::ffi::c_void,
28768        windows_core::PCWSTR,
28769    ) -> windows_core::HRESULT,
28770}
28771pub trait ICoreWebView2PrintSettings2_Impl: ICoreWebView2PrintSettings_Impl {
28772    fn PageRanges(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
28773    fn SetPageRanges(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
28774    fn PagesPerSide(&self, value: *mut i32) -> windows_core::Result<()>;
28775    fn SetPagesPerSide(&self, value: i32) -> windows_core::Result<()>;
28776    fn Copies(&self, value: *mut i32) -> windows_core::Result<()>;
28777    fn SetCopies(&self, value: i32) -> windows_core::Result<()>;
28778    fn Collation(&self, value: *mut COREWEBVIEW2_PRINT_COLLATION) -> windows_core::Result<()>;
28779    fn SetCollation(&self, value: COREWEBVIEW2_PRINT_COLLATION) -> windows_core::Result<()>;
28780    fn ColorMode(&self, value: *mut COREWEBVIEW2_PRINT_COLOR_MODE) -> windows_core::Result<()>;
28781    fn SetColorMode(&self, value: COREWEBVIEW2_PRINT_COLOR_MODE) -> windows_core::Result<()>;
28782    fn Duplex(&self, value: *mut COREWEBVIEW2_PRINT_DUPLEX) -> windows_core::Result<()>;
28783    fn SetDuplex(&self, value: COREWEBVIEW2_PRINT_DUPLEX) -> windows_core::Result<()>;
28784    fn MediaSize(&self, value: *mut COREWEBVIEW2_PRINT_MEDIA_SIZE) -> windows_core::Result<()>;
28785    fn SetMediaSize(&self, value: COREWEBVIEW2_PRINT_MEDIA_SIZE) -> windows_core::Result<()>;
28786    fn PrinterName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
28787    fn SetPrinterName(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
28788}
28789impl ICoreWebView2PrintSettings2_Vtbl {
28790    pub const fn new<Identity: ICoreWebView2PrintSettings2_Impl, const OFFSET: isize>() -> Self {
28791        unsafe extern "system" fn PageRanges<
28792            Identity: ICoreWebView2PrintSettings2_Impl,
28793            const OFFSET: isize,
28794        >(
28795            this: *mut core::ffi::c_void,
28796            value: *mut windows_core::PWSTR,
28797        ) -> windows_core::HRESULT {
28798            unsafe {
28799                let this: &Identity =
28800                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28801                ICoreWebView2PrintSettings2_Impl::PageRanges(
28802                    this,
28803                    core::mem::transmute_copy(&value),
28804                )
28805                .into()
28806            }
28807        }
28808        unsafe extern "system" fn SetPageRanges<
28809            Identity: ICoreWebView2PrintSettings2_Impl,
28810            const OFFSET: isize,
28811        >(
28812            this: *mut core::ffi::c_void,
28813            value: windows_core::PCWSTR,
28814        ) -> windows_core::HRESULT {
28815            unsafe {
28816                let this: &Identity =
28817                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28818                ICoreWebView2PrintSettings2_Impl::SetPageRanges(this, core::mem::transmute(&value))
28819                    .into()
28820            }
28821        }
28822        unsafe extern "system" fn PagesPerSide<
28823            Identity: ICoreWebView2PrintSettings2_Impl,
28824            const OFFSET: isize,
28825        >(
28826            this: *mut core::ffi::c_void,
28827            value: *mut i32,
28828        ) -> windows_core::HRESULT {
28829            unsafe {
28830                let this: &Identity =
28831                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28832                ICoreWebView2PrintSettings2_Impl::PagesPerSide(
28833                    this,
28834                    core::mem::transmute_copy(&value),
28835                )
28836                .into()
28837            }
28838        }
28839        unsafe extern "system" fn SetPagesPerSide<
28840            Identity: ICoreWebView2PrintSettings2_Impl,
28841            const OFFSET: isize,
28842        >(
28843            this: *mut core::ffi::c_void,
28844            value: i32,
28845        ) -> windows_core::HRESULT {
28846            unsafe {
28847                let this: &Identity =
28848                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28849                ICoreWebView2PrintSettings2_Impl::SetPagesPerSide(
28850                    this,
28851                    core::mem::transmute_copy(&value),
28852                )
28853                .into()
28854            }
28855        }
28856        unsafe extern "system" fn Copies<
28857            Identity: ICoreWebView2PrintSettings2_Impl,
28858            const OFFSET: isize,
28859        >(
28860            this: *mut core::ffi::c_void,
28861            value: *mut i32,
28862        ) -> windows_core::HRESULT {
28863            unsafe {
28864                let this: &Identity =
28865                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28866                ICoreWebView2PrintSettings2_Impl::Copies(this, core::mem::transmute_copy(&value))
28867                    .into()
28868            }
28869        }
28870        unsafe extern "system" fn SetCopies<
28871            Identity: ICoreWebView2PrintSettings2_Impl,
28872            const OFFSET: isize,
28873        >(
28874            this: *mut core::ffi::c_void,
28875            value: i32,
28876        ) -> windows_core::HRESULT {
28877            unsafe {
28878                let this: &Identity =
28879                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28880                ICoreWebView2PrintSettings2_Impl::SetCopies(this, core::mem::transmute_copy(&value))
28881                    .into()
28882            }
28883        }
28884        unsafe extern "system" fn Collation<
28885            Identity: ICoreWebView2PrintSettings2_Impl,
28886            const OFFSET: isize,
28887        >(
28888            this: *mut core::ffi::c_void,
28889            value: *mut COREWEBVIEW2_PRINT_COLLATION,
28890        ) -> windows_core::HRESULT {
28891            unsafe {
28892                let this: &Identity =
28893                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28894                ICoreWebView2PrintSettings2_Impl::Collation(this, core::mem::transmute_copy(&value))
28895                    .into()
28896            }
28897        }
28898        unsafe extern "system" fn SetCollation<
28899            Identity: ICoreWebView2PrintSettings2_Impl,
28900            const OFFSET: isize,
28901        >(
28902            this: *mut core::ffi::c_void,
28903            value: COREWEBVIEW2_PRINT_COLLATION,
28904        ) -> windows_core::HRESULT {
28905            unsafe {
28906                let this: &Identity =
28907                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28908                ICoreWebView2PrintSettings2_Impl::SetCollation(
28909                    this,
28910                    core::mem::transmute_copy(&value),
28911                )
28912                .into()
28913            }
28914        }
28915        unsafe extern "system" fn ColorMode<
28916            Identity: ICoreWebView2PrintSettings2_Impl,
28917            const OFFSET: isize,
28918        >(
28919            this: *mut core::ffi::c_void,
28920            value: *mut COREWEBVIEW2_PRINT_COLOR_MODE,
28921        ) -> windows_core::HRESULT {
28922            unsafe {
28923                let this: &Identity =
28924                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28925                ICoreWebView2PrintSettings2_Impl::ColorMode(this, core::mem::transmute_copy(&value))
28926                    .into()
28927            }
28928        }
28929        unsafe extern "system" fn SetColorMode<
28930            Identity: ICoreWebView2PrintSettings2_Impl,
28931            const OFFSET: isize,
28932        >(
28933            this: *mut core::ffi::c_void,
28934            value: COREWEBVIEW2_PRINT_COLOR_MODE,
28935        ) -> windows_core::HRESULT {
28936            unsafe {
28937                let this: &Identity =
28938                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28939                ICoreWebView2PrintSettings2_Impl::SetColorMode(
28940                    this,
28941                    core::mem::transmute_copy(&value),
28942                )
28943                .into()
28944            }
28945        }
28946        unsafe extern "system" fn Duplex<
28947            Identity: ICoreWebView2PrintSettings2_Impl,
28948            const OFFSET: isize,
28949        >(
28950            this: *mut core::ffi::c_void,
28951            value: *mut COREWEBVIEW2_PRINT_DUPLEX,
28952        ) -> windows_core::HRESULT {
28953            unsafe {
28954                let this: &Identity =
28955                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28956                ICoreWebView2PrintSettings2_Impl::Duplex(this, core::mem::transmute_copy(&value))
28957                    .into()
28958            }
28959        }
28960        unsafe extern "system" fn SetDuplex<
28961            Identity: ICoreWebView2PrintSettings2_Impl,
28962            const OFFSET: isize,
28963        >(
28964            this: *mut core::ffi::c_void,
28965            value: COREWEBVIEW2_PRINT_DUPLEX,
28966        ) -> windows_core::HRESULT {
28967            unsafe {
28968                let this: &Identity =
28969                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28970                ICoreWebView2PrintSettings2_Impl::SetDuplex(this, core::mem::transmute_copy(&value))
28971                    .into()
28972            }
28973        }
28974        unsafe extern "system" fn MediaSize<
28975            Identity: ICoreWebView2PrintSettings2_Impl,
28976            const OFFSET: isize,
28977        >(
28978            this: *mut core::ffi::c_void,
28979            value: *mut COREWEBVIEW2_PRINT_MEDIA_SIZE,
28980        ) -> windows_core::HRESULT {
28981            unsafe {
28982                let this: &Identity =
28983                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28984                ICoreWebView2PrintSettings2_Impl::MediaSize(this, core::mem::transmute_copy(&value))
28985                    .into()
28986            }
28987        }
28988        unsafe extern "system" fn SetMediaSize<
28989            Identity: ICoreWebView2PrintSettings2_Impl,
28990            const OFFSET: isize,
28991        >(
28992            this: *mut core::ffi::c_void,
28993            value: COREWEBVIEW2_PRINT_MEDIA_SIZE,
28994        ) -> windows_core::HRESULT {
28995            unsafe {
28996                let this: &Identity =
28997                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28998                ICoreWebView2PrintSettings2_Impl::SetMediaSize(
28999                    this,
29000                    core::mem::transmute_copy(&value),
29001                )
29002                .into()
29003            }
29004        }
29005        unsafe extern "system" fn PrinterName<
29006            Identity: ICoreWebView2PrintSettings2_Impl,
29007            const OFFSET: isize,
29008        >(
29009            this: *mut core::ffi::c_void,
29010            value: *mut windows_core::PWSTR,
29011        ) -> windows_core::HRESULT {
29012            unsafe {
29013                let this: &Identity =
29014                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29015                ICoreWebView2PrintSettings2_Impl::PrinterName(
29016                    this,
29017                    core::mem::transmute_copy(&value),
29018                )
29019                .into()
29020            }
29021        }
29022        unsafe extern "system" fn SetPrinterName<
29023            Identity: ICoreWebView2PrintSettings2_Impl,
29024            const OFFSET: isize,
29025        >(
29026            this: *mut core::ffi::c_void,
29027            value: windows_core::PCWSTR,
29028        ) -> windows_core::HRESULT {
29029            unsafe {
29030                let this: &Identity =
29031                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29032                ICoreWebView2PrintSettings2_Impl::SetPrinterName(this, core::mem::transmute(&value))
29033                    .into()
29034            }
29035        }
29036        Self {
29037            base__: ICoreWebView2PrintSettings_Vtbl::new::<Identity, OFFSET>(),
29038            PageRanges: PageRanges::<Identity, OFFSET>,
29039            SetPageRanges: SetPageRanges::<Identity, OFFSET>,
29040            PagesPerSide: PagesPerSide::<Identity, OFFSET>,
29041            SetPagesPerSide: SetPagesPerSide::<Identity, OFFSET>,
29042            Copies: Copies::<Identity, OFFSET>,
29043            SetCopies: SetCopies::<Identity, OFFSET>,
29044            Collation: Collation::<Identity, OFFSET>,
29045            SetCollation: SetCollation::<Identity, OFFSET>,
29046            ColorMode: ColorMode::<Identity, OFFSET>,
29047            SetColorMode: SetColorMode::<Identity, OFFSET>,
29048            Duplex: Duplex::<Identity, OFFSET>,
29049            SetDuplex: SetDuplex::<Identity, OFFSET>,
29050            MediaSize: MediaSize::<Identity, OFFSET>,
29051            SetMediaSize: SetMediaSize::<Identity, OFFSET>,
29052            PrinterName: PrinterName::<Identity, OFFSET>,
29053            SetPrinterName: SetPrinterName::<Identity, OFFSET>,
29054        }
29055    }
29056    pub fn matches(iid: &windows_core::GUID) -> bool {
29057        iid == &<ICoreWebView2PrintSettings2 as windows_core::Interface>::IID
29058            || iid == &<ICoreWebView2PrintSettings as windows_core::Interface>::IID
29059    }
29060}
29061impl windows_core::RuntimeName for ICoreWebView2PrintSettings2 {}
29062windows_core::imp::define_interface!(
29063    ICoreWebView2PrintToPdfCompletedHandler,
29064    ICoreWebView2PrintToPdfCompletedHandler_Vtbl,
29065    0xccf1ef04_fd8e_4d5f_b2de_0983e41b8c36
29066);
29067windows_core::imp::interface_hierarchy!(
29068    ICoreWebView2PrintToPdfCompletedHandler,
29069    windows_core::IUnknown
29070);
29071impl ICoreWebView2PrintToPdfCompletedHandler {
29072    pub unsafe fn Invoke(
29073        &self,
29074        errorcode: windows_core::HRESULT,
29075        result: bool,
29076    ) -> windows_core::Result<()> {
29077        unsafe {
29078            (windows_core::Interface::vtable(self).Invoke)(
29079                windows_core::Interface::as_raw(self),
29080                errorcode,
29081                result.into(),
29082            )
29083            .ok()
29084        }
29085    }
29086}
29087#[repr(C)]
29088#[doc(hidden)]
29089pub struct ICoreWebView2PrintToPdfCompletedHandler_Vtbl {
29090    pub base__: windows_core::IUnknown_Vtbl,
29091    pub Invoke: unsafe extern "system" fn(
29092        *mut core::ffi::c_void,
29093        windows_core::HRESULT,
29094        windows_core::BOOL,
29095    ) -> windows_core::HRESULT,
29096}
29097pub trait ICoreWebView2PrintToPdfCompletedHandler_Impl: windows_core::IUnknownImpl {
29098    fn Invoke(
29099        &self,
29100        errorcode: windows_core::HRESULT,
29101        result: windows_core::BOOL,
29102    ) -> windows_core::Result<()>;
29103}
29104impl ICoreWebView2PrintToPdfCompletedHandler_Vtbl {
29105    pub const fn new<
29106        Identity: ICoreWebView2PrintToPdfCompletedHandler_Impl,
29107        const OFFSET: isize,
29108    >() -> Self {
29109        unsafe extern "system" fn Invoke<
29110            Identity: ICoreWebView2PrintToPdfCompletedHandler_Impl,
29111            const OFFSET: isize,
29112        >(
29113            this: *mut core::ffi::c_void,
29114            errorcode: windows_core::HRESULT,
29115            result: windows_core::BOOL,
29116        ) -> windows_core::HRESULT {
29117            unsafe {
29118                let this: &Identity =
29119                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29120                ICoreWebView2PrintToPdfCompletedHandler_Impl::Invoke(
29121                    this,
29122                    core::mem::transmute_copy(&errorcode),
29123                    core::mem::transmute_copy(&result),
29124                )
29125                .into()
29126            }
29127        }
29128        Self {
29129            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29130            Invoke: Invoke::<Identity, OFFSET>,
29131        }
29132    }
29133    pub fn matches(iid: &windows_core::GUID) -> bool {
29134        iid == &<ICoreWebView2PrintToPdfCompletedHandler as windows_core::Interface>::IID
29135    }
29136}
29137impl windows_core::RuntimeName for ICoreWebView2PrintToPdfCompletedHandler {}
29138windows_core::imp::define_interface!(
29139    ICoreWebView2PrintToPdfStreamCompletedHandler,
29140    ICoreWebView2PrintToPdfStreamCompletedHandler_Vtbl,
29141    0x4c9f8229_8f93_444f_a711_2c0dfd6359d5
29142);
29143windows_core::imp::interface_hierarchy!(
29144    ICoreWebView2PrintToPdfStreamCompletedHandler,
29145    windows_core::IUnknown
29146);
29147impl ICoreWebView2PrintToPdfStreamCompletedHandler {
29148    pub unsafe fn Invoke<P1>(
29149        &self,
29150        errorcode: windows_core::HRESULT,
29151        result: P1,
29152    ) -> windows_core::Result<()>
29153    where
29154        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
29155    {
29156        unsafe {
29157            (windows_core::Interface::vtable(self).Invoke)(
29158                windows_core::Interface::as_raw(self),
29159                errorcode,
29160                result.param().abi(),
29161            )
29162            .ok()
29163        }
29164    }
29165}
29166#[repr(C)]
29167#[doc(hidden)]
29168pub struct ICoreWebView2PrintToPdfStreamCompletedHandler_Vtbl {
29169    pub base__: windows_core::IUnknown_Vtbl,
29170    pub Invoke: unsafe extern "system" fn(
29171        *mut core::ffi::c_void,
29172        windows_core::HRESULT,
29173        *mut core::ffi::c_void,
29174    ) -> windows_core::HRESULT,
29175}
29176pub trait ICoreWebView2PrintToPdfStreamCompletedHandler_Impl: windows_core::IUnknownImpl {
29177    fn Invoke(
29178        &self,
29179        errorcode: windows_core::HRESULT,
29180        result: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
29181    ) -> windows_core::Result<()>;
29182}
29183impl ICoreWebView2PrintToPdfStreamCompletedHandler_Vtbl {
29184    pub const fn new<
29185        Identity: ICoreWebView2PrintToPdfStreamCompletedHandler_Impl,
29186        const OFFSET: isize,
29187    >() -> Self {
29188        unsafe extern "system" fn Invoke<
29189            Identity: ICoreWebView2PrintToPdfStreamCompletedHandler_Impl,
29190            const OFFSET: isize,
29191        >(
29192            this: *mut core::ffi::c_void,
29193            errorcode: windows_core::HRESULT,
29194            result: *mut core::ffi::c_void,
29195        ) -> windows_core::HRESULT {
29196            unsafe {
29197                let this: &Identity =
29198                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29199                ICoreWebView2PrintToPdfStreamCompletedHandler_Impl::Invoke(
29200                    this,
29201                    core::mem::transmute_copy(&errorcode),
29202                    core::mem::transmute_copy(&result),
29203                )
29204                .into()
29205            }
29206        }
29207        Self {
29208            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29209            Invoke: Invoke::<Identity, OFFSET>,
29210        }
29211    }
29212    pub fn matches(iid: &windows_core::GUID) -> bool {
29213        iid == &<ICoreWebView2PrintToPdfStreamCompletedHandler as windows_core::Interface>::IID
29214    }
29215}
29216impl windows_core::RuntimeName for ICoreWebView2PrintToPdfStreamCompletedHandler {}
29217windows_core::imp::define_interface!(
29218    ICoreWebView2ProcessExtendedInfo,
29219    ICoreWebView2ProcessExtendedInfo_Vtbl,
29220    0xaf4c4c2e_45db_11ee_be56_0242ac120002
29221);
29222windows_core::imp::interface_hierarchy!(ICoreWebView2ProcessExtendedInfo, windows_core::IUnknown);
29223impl ICoreWebView2ProcessExtendedInfo {
29224    pub unsafe fn ProcessInfo(&self) -> windows_core::Result<ICoreWebView2ProcessInfo> {
29225        unsafe {
29226            let mut result__ = core::mem::zeroed();
29227            (windows_core::Interface::vtable(self).ProcessInfo)(
29228                windows_core::Interface::as_raw(self),
29229                &mut result__,
29230            )
29231            .and_then(|| windows_core::Type::from_abi(result__))
29232        }
29233    }
29234    pub unsafe fn AssociatedFrameInfos(
29235        &self,
29236    ) -> windows_core::Result<ICoreWebView2FrameInfoCollection> {
29237        unsafe {
29238            let mut result__ = core::mem::zeroed();
29239            (windows_core::Interface::vtable(self).AssociatedFrameInfos)(
29240                windows_core::Interface::as_raw(self),
29241                &mut result__,
29242            )
29243            .and_then(|| windows_core::Type::from_abi(result__))
29244        }
29245    }
29246}
29247#[repr(C)]
29248#[doc(hidden)]
29249pub struct ICoreWebView2ProcessExtendedInfo_Vtbl {
29250    pub base__: windows_core::IUnknown_Vtbl,
29251    pub ProcessInfo: unsafe extern "system" fn(
29252        *mut core::ffi::c_void,
29253        *mut *mut core::ffi::c_void,
29254    ) -> windows_core::HRESULT,
29255    pub AssociatedFrameInfos: unsafe extern "system" fn(
29256        *mut core::ffi::c_void,
29257        *mut *mut core::ffi::c_void,
29258    ) -> windows_core::HRESULT,
29259}
29260pub trait ICoreWebView2ProcessExtendedInfo_Impl: windows_core::IUnknownImpl {
29261    fn ProcessInfo(&self) -> windows_core::Result<ICoreWebView2ProcessInfo>;
29262    fn AssociatedFrameInfos(&self) -> windows_core::Result<ICoreWebView2FrameInfoCollection>;
29263}
29264impl ICoreWebView2ProcessExtendedInfo_Vtbl {
29265    pub const fn new<Identity: ICoreWebView2ProcessExtendedInfo_Impl, const OFFSET: isize>() -> Self
29266    {
29267        unsafe extern "system" fn ProcessInfo<
29268            Identity: ICoreWebView2ProcessExtendedInfo_Impl,
29269            const OFFSET: isize,
29270        >(
29271            this: *mut core::ffi::c_void,
29272            processinfo: *mut *mut core::ffi::c_void,
29273        ) -> windows_core::HRESULT {
29274            unsafe {
29275                let this: &Identity =
29276                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29277                match ICoreWebView2ProcessExtendedInfo_Impl::ProcessInfo(this) {
29278                    Ok(ok__) => {
29279                        processinfo.write(core::mem::transmute(ok__));
29280                        windows_core::HRESULT(0)
29281                    }
29282                    Err(err) => err.into(),
29283                }
29284            }
29285        }
29286        unsafe extern "system" fn AssociatedFrameInfos<
29287            Identity: ICoreWebView2ProcessExtendedInfo_Impl,
29288            const OFFSET: isize,
29289        >(
29290            this: *mut core::ffi::c_void,
29291            frames: *mut *mut core::ffi::c_void,
29292        ) -> windows_core::HRESULT {
29293            unsafe {
29294                let this: &Identity =
29295                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29296                match ICoreWebView2ProcessExtendedInfo_Impl::AssociatedFrameInfos(this) {
29297                    Ok(ok__) => {
29298                        frames.write(core::mem::transmute(ok__));
29299                        windows_core::HRESULT(0)
29300                    }
29301                    Err(err) => err.into(),
29302                }
29303            }
29304        }
29305        Self {
29306            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29307            ProcessInfo: ProcessInfo::<Identity, OFFSET>,
29308            AssociatedFrameInfos: AssociatedFrameInfos::<Identity, OFFSET>,
29309        }
29310    }
29311    pub fn matches(iid: &windows_core::GUID) -> bool {
29312        iid == &<ICoreWebView2ProcessExtendedInfo as windows_core::Interface>::IID
29313    }
29314}
29315impl windows_core::RuntimeName for ICoreWebView2ProcessExtendedInfo {}
29316windows_core::imp::define_interface!(
29317    ICoreWebView2ProcessExtendedInfoCollection,
29318    ICoreWebView2ProcessExtendedInfoCollection_Vtbl,
29319    0x32efa696_407a_11ee_be56_0242ac120002
29320);
29321windows_core::imp::interface_hierarchy!(
29322    ICoreWebView2ProcessExtendedInfoCollection,
29323    windows_core::IUnknown
29324);
29325impl ICoreWebView2ProcessExtendedInfoCollection {
29326    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
29327        unsafe {
29328            (windows_core::Interface::vtable(self).Count)(
29329                windows_core::Interface::as_raw(self),
29330                value as _,
29331            )
29332            .ok()
29333        }
29334    }
29335    pub unsafe fn GetValueAtIndex(
29336        &self,
29337        index: u32,
29338    ) -> windows_core::Result<ICoreWebView2ProcessExtendedInfo> {
29339        unsafe {
29340            let mut result__ = core::mem::zeroed();
29341            (windows_core::Interface::vtable(self).GetValueAtIndex)(
29342                windows_core::Interface::as_raw(self),
29343                index,
29344                &mut result__,
29345            )
29346            .and_then(|| windows_core::Type::from_abi(result__))
29347        }
29348    }
29349}
29350#[repr(C)]
29351#[doc(hidden)]
29352pub struct ICoreWebView2ProcessExtendedInfoCollection_Vtbl {
29353    pub base__: windows_core::IUnknown_Vtbl,
29354    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
29355    pub GetValueAtIndex: unsafe extern "system" fn(
29356        *mut core::ffi::c_void,
29357        u32,
29358        *mut *mut core::ffi::c_void,
29359    ) -> windows_core::HRESULT,
29360}
29361pub trait ICoreWebView2ProcessExtendedInfoCollection_Impl: windows_core::IUnknownImpl {
29362    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
29363    fn GetValueAtIndex(&self, index: u32)
29364        -> windows_core::Result<ICoreWebView2ProcessExtendedInfo>;
29365}
29366impl ICoreWebView2ProcessExtendedInfoCollection_Vtbl {
29367    pub const fn new<
29368        Identity: ICoreWebView2ProcessExtendedInfoCollection_Impl,
29369        const OFFSET: isize,
29370    >() -> Self {
29371        unsafe extern "system" fn Count<
29372            Identity: ICoreWebView2ProcessExtendedInfoCollection_Impl,
29373            const OFFSET: isize,
29374        >(
29375            this: *mut core::ffi::c_void,
29376            value: *mut u32,
29377        ) -> windows_core::HRESULT {
29378            unsafe {
29379                let this: &Identity =
29380                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29381                ICoreWebView2ProcessExtendedInfoCollection_Impl::Count(
29382                    this,
29383                    core::mem::transmute_copy(&value),
29384                )
29385                .into()
29386            }
29387        }
29388        unsafe extern "system" fn GetValueAtIndex<
29389            Identity: ICoreWebView2ProcessExtendedInfoCollection_Impl,
29390            const OFFSET: isize,
29391        >(
29392            this: *mut core::ffi::c_void,
29393            index: u32,
29394            value: *mut *mut core::ffi::c_void,
29395        ) -> windows_core::HRESULT {
29396            unsafe {
29397                let this: &Identity =
29398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29399                match ICoreWebView2ProcessExtendedInfoCollection_Impl::GetValueAtIndex(
29400                    this,
29401                    core::mem::transmute_copy(&index),
29402                ) {
29403                    Ok(ok__) => {
29404                        value.write(core::mem::transmute(ok__));
29405                        windows_core::HRESULT(0)
29406                    }
29407                    Err(err) => err.into(),
29408                }
29409            }
29410        }
29411        Self {
29412            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29413            Count: Count::<Identity, OFFSET>,
29414            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
29415        }
29416    }
29417    pub fn matches(iid: &windows_core::GUID) -> bool {
29418        iid == &<ICoreWebView2ProcessExtendedInfoCollection as windows_core::Interface>::IID
29419    }
29420}
29421impl windows_core::RuntimeName for ICoreWebView2ProcessExtendedInfoCollection {}
29422windows_core::imp::define_interface!(
29423    ICoreWebView2ProcessFailedEventArgs,
29424    ICoreWebView2ProcessFailedEventArgs_Vtbl,
29425    0x8155a9a4_1474_4a86_8cae_151b0fa6b8ca
29426);
29427windows_core::imp::interface_hierarchy!(
29428    ICoreWebView2ProcessFailedEventArgs,
29429    windows_core::IUnknown
29430);
29431impl ICoreWebView2ProcessFailedEventArgs {
29432    pub unsafe fn ProcessFailedKind(
29433        &self,
29434        value: *mut COREWEBVIEW2_PROCESS_FAILED_KIND,
29435    ) -> windows_core::Result<()> {
29436        unsafe {
29437            (windows_core::Interface::vtable(self).ProcessFailedKind)(
29438                windows_core::Interface::as_raw(self),
29439                value as _,
29440            )
29441            .ok()
29442        }
29443    }
29444}
29445#[repr(C)]
29446#[doc(hidden)]
29447pub struct ICoreWebView2ProcessFailedEventArgs_Vtbl {
29448    pub base__: windows_core::IUnknown_Vtbl,
29449    pub ProcessFailedKind: unsafe extern "system" fn(
29450        *mut core::ffi::c_void,
29451        *mut COREWEBVIEW2_PROCESS_FAILED_KIND,
29452    ) -> windows_core::HRESULT,
29453}
29454pub trait ICoreWebView2ProcessFailedEventArgs_Impl: windows_core::IUnknownImpl {
29455    fn ProcessFailedKind(
29456        &self,
29457        value: *mut COREWEBVIEW2_PROCESS_FAILED_KIND,
29458    ) -> windows_core::Result<()>;
29459}
29460impl ICoreWebView2ProcessFailedEventArgs_Vtbl {
29461    pub const fn new<Identity: ICoreWebView2ProcessFailedEventArgs_Impl, const OFFSET: isize>(
29462    ) -> Self {
29463        unsafe extern "system" fn ProcessFailedKind<
29464            Identity: ICoreWebView2ProcessFailedEventArgs_Impl,
29465            const OFFSET: isize,
29466        >(
29467            this: *mut core::ffi::c_void,
29468            value: *mut COREWEBVIEW2_PROCESS_FAILED_KIND,
29469        ) -> windows_core::HRESULT {
29470            unsafe {
29471                let this: &Identity =
29472                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29473                ICoreWebView2ProcessFailedEventArgs_Impl::ProcessFailedKind(
29474                    this,
29475                    core::mem::transmute_copy(&value),
29476                )
29477                .into()
29478            }
29479        }
29480        Self {
29481            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29482            ProcessFailedKind: ProcessFailedKind::<Identity, OFFSET>,
29483        }
29484    }
29485    pub fn matches(iid: &windows_core::GUID) -> bool {
29486        iid == &<ICoreWebView2ProcessFailedEventArgs as windows_core::Interface>::IID
29487    }
29488}
29489impl windows_core::RuntimeName for ICoreWebView2ProcessFailedEventArgs {}
29490windows_core::imp::define_interface!(
29491    ICoreWebView2ProcessFailedEventArgs2,
29492    ICoreWebView2ProcessFailedEventArgs2_Vtbl,
29493    0x4dab9422_46fa_4c3e_a5d2_41d2071d3680
29494);
29495impl core::ops::Deref for ICoreWebView2ProcessFailedEventArgs2 {
29496    type Target = ICoreWebView2ProcessFailedEventArgs;
29497    fn deref(&self) -> &Self::Target {
29498        unsafe { core::mem::transmute(self) }
29499    }
29500}
29501windows_core::imp::interface_hierarchy!(
29502    ICoreWebView2ProcessFailedEventArgs2,
29503    windows_core::IUnknown,
29504    ICoreWebView2ProcessFailedEventArgs
29505);
29506impl ICoreWebView2ProcessFailedEventArgs2 {
29507    pub unsafe fn Reason(
29508        &self,
29509        reason: *mut COREWEBVIEW2_PROCESS_FAILED_REASON,
29510    ) -> windows_core::Result<()> {
29511        unsafe {
29512            (windows_core::Interface::vtable(self).Reason)(
29513                windows_core::Interface::as_raw(self),
29514                reason as _,
29515            )
29516            .ok()
29517        }
29518    }
29519    pub unsafe fn ExitCode(&self, exitcode: *mut i32) -> windows_core::Result<()> {
29520        unsafe {
29521            (windows_core::Interface::vtable(self).ExitCode)(
29522                windows_core::Interface::as_raw(self),
29523                exitcode as _,
29524            )
29525            .ok()
29526        }
29527    }
29528    pub unsafe fn ProcessDescription(
29529        &self,
29530        processdescription: *mut windows_core::PWSTR,
29531    ) -> windows_core::Result<()> {
29532        unsafe {
29533            (windows_core::Interface::vtable(self).ProcessDescription)(
29534                windows_core::Interface::as_raw(self),
29535                processdescription as _,
29536            )
29537            .ok()
29538        }
29539    }
29540    pub unsafe fn FrameInfosForFailedProcess(
29541        &self,
29542    ) -> windows_core::Result<ICoreWebView2FrameInfoCollection> {
29543        unsafe {
29544            let mut result__ = core::mem::zeroed();
29545            (windows_core::Interface::vtable(self).FrameInfosForFailedProcess)(
29546                windows_core::Interface::as_raw(self),
29547                &mut result__,
29548            )
29549            .and_then(|| windows_core::Type::from_abi(result__))
29550        }
29551    }
29552}
29553#[repr(C)]
29554#[doc(hidden)]
29555pub struct ICoreWebView2ProcessFailedEventArgs2_Vtbl {
29556    pub base__: ICoreWebView2ProcessFailedEventArgs_Vtbl,
29557    pub Reason: unsafe extern "system" fn(
29558        *mut core::ffi::c_void,
29559        *mut COREWEBVIEW2_PROCESS_FAILED_REASON,
29560    ) -> windows_core::HRESULT,
29561    pub ExitCode:
29562        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
29563    pub ProcessDescription: unsafe extern "system" fn(
29564        *mut core::ffi::c_void,
29565        *mut windows_core::PWSTR,
29566    ) -> windows_core::HRESULT,
29567    pub FrameInfosForFailedProcess: unsafe extern "system" fn(
29568        *mut core::ffi::c_void,
29569        *mut *mut core::ffi::c_void,
29570    ) -> windows_core::HRESULT,
29571}
29572pub trait ICoreWebView2ProcessFailedEventArgs2_Impl:
29573    ICoreWebView2ProcessFailedEventArgs_Impl
29574{
29575    fn Reason(&self, reason: *mut COREWEBVIEW2_PROCESS_FAILED_REASON) -> windows_core::Result<()>;
29576    fn ExitCode(&self, exitcode: *mut i32) -> windows_core::Result<()>;
29577    fn ProcessDescription(
29578        &self,
29579        processdescription: *mut windows_core::PWSTR,
29580    ) -> windows_core::Result<()>;
29581    fn FrameInfosForFailedProcess(&self) -> windows_core::Result<ICoreWebView2FrameInfoCollection>;
29582}
29583impl ICoreWebView2ProcessFailedEventArgs2_Vtbl {
29584    pub const fn new<Identity: ICoreWebView2ProcessFailedEventArgs2_Impl, const OFFSET: isize>(
29585    ) -> Self {
29586        unsafe extern "system" fn Reason<
29587            Identity: ICoreWebView2ProcessFailedEventArgs2_Impl,
29588            const OFFSET: isize,
29589        >(
29590            this: *mut core::ffi::c_void,
29591            reason: *mut COREWEBVIEW2_PROCESS_FAILED_REASON,
29592        ) -> windows_core::HRESULT {
29593            unsafe {
29594                let this: &Identity =
29595                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29596                ICoreWebView2ProcessFailedEventArgs2_Impl::Reason(
29597                    this,
29598                    core::mem::transmute_copy(&reason),
29599                )
29600                .into()
29601            }
29602        }
29603        unsafe extern "system" fn ExitCode<
29604            Identity: ICoreWebView2ProcessFailedEventArgs2_Impl,
29605            const OFFSET: isize,
29606        >(
29607            this: *mut core::ffi::c_void,
29608            exitcode: *mut i32,
29609        ) -> windows_core::HRESULT {
29610            unsafe {
29611                let this: &Identity =
29612                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29613                ICoreWebView2ProcessFailedEventArgs2_Impl::ExitCode(
29614                    this,
29615                    core::mem::transmute_copy(&exitcode),
29616                )
29617                .into()
29618            }
29619        }
29620        unsafe extern "system" fn ProcessDescription<
29621            Identity: ICoreWebView2ProcessFailedEventArgs2_Impl,
29622            const OFFSET: isize,
29623        >(
29624            this: *mut core::ffi::c_void,
29625            processdescription: *mut windows_core::PWSTR,
29626        ) -> windows_core::HRESULT {
29627            unsafe {
29628                let this: &Identity =
29629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29630                ICoreWebView2ProcessFailedEventArgs2_Impl::ProcessDescription(
29631                    this,
29632                    core::mem::transmute_copy(&processdescription),
29633                )
29634                .into()
29635            }
29636        }
29637        unsafe extern "system" fn FrameInfosForFailedProcess<
29638            Identity: ICoreWebView2ProcessFailedEventArgs2_Impl,
29639            const OFFSET: isize,
29640        >(
29641            this: *mut core::ffi::c_void,
29642            frames: *mut *mut core::ffi::c_void,
29643        ) -> windows_core::HRESULT {
29644            unsafe {
29645                let this: &Identity =
29646                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29647                match ICoreWebView2ProcessFailedEventArgs2_Impl::FrameInfosForFailedProcess(this) {
29648                    Ok(ok__) => {
29649                        frames.write(core::mem::transmute(ok__));
29650                        windows_core::HRESULT(0)
29651                    }
29652                    Err(err) => err.into(),
29653                }
29654            }
29655        }
29656        Self {
29657            base__: ICoreWebView2ProcessFailedEventArgs_Vtbl::new::<Identity, OFFSET>(),
29658            Reason: Reason::<Identity, OFFSET>,
29659            ExitCode: ExitCode::<Identity, OFFSET>,
29660            ProcessDescription: ProcessDescription::<Identity, OFFSET>,
29661            FrameInfosForFailedProcess: FrameInfosForFailedProcess::<Identity, OFFSET>,
29662        }
29663    }
29664    pub fn matches(iid: &windows_core::GUID) -> bool {
29665        iid == &<ICoreWebView2ProcessFailedEventArgs2 as windows_core::Interface>::IID
29666            || iid == &<ICoreWebView2ProcessFailedEventArgs as windows_core::Interface>::IID
29667    }
29668}
29669impl windows_core::RuntimeName for ICoreWebView2ProcessFailedEventArgs2 {}
29670windows_core::imp::define_interface!(
29671    ICoreWebView2ProcessFailedEventArgs3,
29672    ICoreWebView2ProcessFailedEventArgs3_Vtbl,
29673    0xab667428_094d_5fd1_b480_8b4c0fdbdf2f
29674);
29675impl core::ops::Deref for ICoreWebView2ProcessFailedEventArgs3 {
29676    type Target = ICoreWebView2ProcessFailedEventArgs2;
29677    fn deref(&self) -> &Self::Target {
29678        unsafe { core::mem::transmute(self) }
29679    }
29680}
29681windows_core::imp::interface_hierarchy!(
29682    ICoreWebView2ProcessFailedEventArgs3,
29683    windows_core::IUnknown,
29684    ICoreWebView2ProcessFailedEventArgs,
29685    ICoreWebView2ProcessFailedEventArgs2
29686);
29687impl ICoreWebView2ProcessFailedEventArgs3 {
29688    pub unsafe fn FailureSourceModulePath(
29689        &self,
29690        value: *mut windows_core::PWSTR,
29691    ) -> windows_core::Result<()> {
29692        unsafe {
29693            (windows_core::Interface::vtable(self).FailureSourceModulePath)(
29694                windows_core::Interface::as_raw(self),
29695                value as _,
29696            )
29697            .ok()
29698        }
29699    }
29700}
29701#[repr(C)]
29702#[doc(hidden)]
29703pub struct ICoreWebView2ProcessFailedEventArgs3_Vtbl {
29704    pub base__: ICoreWebView2ProcessFailedEventArgs2_Vtbl,
29705    pub FailureSourceModulePath: unsafe extern "system" fn(
29706        *mut core::ffi::c_void,
29707        *mut windows_core::PWSTR,
29708    ) -> windows_core::HRESULT,
29709}
29710pub trait ICoreWebView2ProcessFailedEventArgs3_Impl:
29711    ICoreWebView2ProcessFailedEventArgs2_Impl
29712{
29713    fn FailureSourceModulePath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
29714}
29715impl ICoreWebView2ProcessFailedEventArgs3_Vtbl {
29716    pub const fn new<Identity: ICoreWebView2ProcessFailedEventArgs3_Impl, const OFFSET: isize>(
29717    ) -> Self {
29718        unsafe extern "system" fn FailureSourceModulePath<
29719            Identity: ICoreWebView2ProcessFailedEventArgs3_Impl,
29720            const OFFSET: isize,
29721        >(
29722            this: *mut core::ffi::c_void,
29723            value: *mut windows_core::PWSTR,
29724        ) -> windows_core::HRESULT {
29725            unsafe {
29726                let this: &Identity =
29727                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29728                ICoreWebView2ProcessFailedEventArgs3_Impl::FailureSourceModulePath(
29729                    this,
29730                    core::mem::transmute_copy(&value),
29731                )
29732                .into()
29733            }
29734        }
29735        Self {
29736            base__: ICoreWebView2ProcessFailedEventArgs2_Vtbl::new::<Identity, OFFSET>(),
29737            FailureSourceModulePath: FailureSourceModulePath::<Identity, OFFSET>,
29738        }
29739    }
29740    pub fn matches(iid: &windows_core::GUID) -> bool {
29741        iid == &<ICoreWebView2ProcessFailedEventArgs3 as windows_core::Interface>::IID
29742            || iid == &<ICoreWebView2ProcessFailedEventArgs as windows_core::Interface>::IID
29743            || iid == &<ICoreWebView2ProcessFailedEventArgs2 as windows_core::Interface>::IID
29744    }
29745}
29746impl windows_core::RuntimeName for ICoreWebView2ProcessFailedEventArgs3 {}
29747windows_core::imp::define_interface!(
29748    ICoreWebView2ProcessFailedEventHandler,
29749    ICoreWebView2ProcessFailedEventHandler_Vtbl,
29750    0x79e0aea4_990b_42d9_aa1d_0fcc2e5bc7f1
29751);
29752windows_core::imp::interface_hierarchy!(
29753    ICoreWebView2ProcessFailedEventHandler,
29754    windows_core::IUnknown
29755);
29756impl ICoreWebView2ProcessFailedEventHandler {
29757    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
29758    where
29759        P0: windows_core::Param<ICoreWebView2>,
29760        P1: windows_core::Param<ICoreWebView2ProcessFailedEventArgs>,
29761    {
29762        unsafe {
29763            (windows_core::Interface::vtable(self).Invoke)(
29764                windows_core::Interface::as_raw(self),
29765                sender.param().abi(),
29766                args.param().abi(),
29767            )
29768            .ok()
29769        }
29770    }
29771}
29772#[repr(C)]
29773#[doc(hidden)]
29774pub struct ICoreWebView2ProcessFailedEventHandler_Vtbl {
29775    pub base__: windows_core::IUnknown_Vtbl,
29776    pub Invoke: unsafe extern "system" fn(
29777        *mut core::ffi::c_void,
29778        *mut core::ffi::c_void,
29779        *mut core::ffi::c_void,
29780    ) -> windows_core::HRESULT,
29781}
29782pub trait ICoreWebView2ProcessFailedEventHandler_Impl: windows_core::IUnknownImpl {
29783    fn Invoke(
29784        &self,
29785        sender: windows_core::Ref<'_, ICoreWebView2>,
29786        args: windows_core::Ref<'_, ICoreWebView2ProcessFailedEventArgs>,
29787    ) -> windows_core::Result<()>;
29788}
29789impl ICoreWebView2ProcessFailedEventHandler_Vtbl {
29790    pub const fn new<Identity: ICoreWebView2ProcessFailedEventHandler_Impl, const OFFSET: isize>(
29791    ) -> Self {
29792        unsafe extern "system" fn Invoke<
29793            Identity: ICoreWebView2ProcessFailedEventHandler_Impl,
29794            const OFFSET: isize,
29795        >(
29796            this: *mut core::ffi::c_void,
29797            sender: *mut core::ffi::c_void,
29798            args: *mut core::ffi::c_void,
29799        ) -> windows_core::HRESULT {
29800            unsafe {
29801                let this: &Identity =
29802                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29803                ICoreWebView2ProcessFailedEventHandler_Impl::Invoke(
29804                    this,
29805                    core::mem::transmute_copy(&sender),
29806                    core::mem::transmute_copy(&args),
29807                )
29808                .into()
29809            }
29810        }
29811        Self {
29812            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29813            Invoke: Invoke::<Identity, OFFSET>,
29814        }
29815    }
29816    pub fn matches(iid: &windows_core::GUID) -> bool {
29817        iid == &<ICoreWebView2ProcessFailedEventHandler as windows_core::Interface>::IID
29818    }
29819}
29820impl windows_core::RuntimeName for ICoreWebView2ProcessFailedEventHandler {}
29821windows_core::imp::define_interface!(
29822    ICoreWebView2ProcessInfo,
29823    ICoreWebView2ProcessInfo_Vtbl,
29824    0x84fa7612_3f3d_4fbf_889d_fad000492d72
29825);
29826windows_core::imp::interface_hierarchy!(ICoreWebView2ProcessInfo, windows_core::IUnknown);
29827impl ICoreWebView2ProcessInfo {
29828    pub unsafe fn ProcessId(&self, value: *mut i32) -> windows_core::Result<()> {
29829        unsafe {
29830            (windows_core::Interface::vtable(self).ProcessId)(
29831                windows_core::Interface::as_raw(self),
29832                value as _,
29833            )
29834            .ok()
29835        }
29836    }
29837    pub unsafe fn Kind(&self, kind: *mut COREWEBVIEW2_PROCESS_KIND) -> windows_core::Result<()> {
29838        unsafe {
29839            (windows_core::Interface::vtable(self).Kind)(
29840                windows_core::Interface::as_raw(self),
29841                kind as _,
29842            )
29843            .ok()
29844        }
29845    }
29846}
29847#[repr(C)]
29848#[doc(hidden)]
29849pub struct ICoreWebView2ProcessInfo_Vtbl {
29850    pub base__: windows_core::IUnknown_Vtbl,
29851    pub ProcessId:
29852        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
29853    pub Kind: unsafe extern "system" fn(
29854        *mut core::ffi::c_void,
29855        *mut COREWEBVIEW2_PROCESS_KIND,
29856    ) -> windows_core::HRESULT,
29857}
29858pub trait ICoreWebView2ProcessInfo_Impl: windows_core::IUnknownImpl {
29859    fn ProcessId(&self, value: *mut i32) -> windows_core::Result<()>;
29860    fn Kind(&self, kind: *mut COREWEBVIEW2_PROCESS_KIND) -> windows_core::Result<()>;
29861}
29862impl ICoreWebView2ProcessInfo_Vtbl {
29863    pub const fn new<Identity: ICoreWebView2ProcessInfo_Impl, const OFFSET: isize>() -> Self {
29864        unsafe extern "system" fn ProcessId<
29865            Identity: ICoreWebView2ProcessInfo_Impl,
29866            const OFFSET: isize,
29867        >(
29868            this: *mut core::ffi::c_void,
29869            value: *mut i32,
29870        ) -> windows_core::HRESULT {
29871            unsafe {
29872                let this: &Identity =
29873                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29874                ICoreWebView2ProcessInfo_Impl::ProcessId(this, core::mem::transmute_copy(&value))
29875                    .into()
29876            }
29877        }
29878        unsafe extern "system" fn Kind<
29879            Identity: ICoreWebView2ProcessInfo_Impl,
29880            const OFFSET: isize,
29881        >(
29882            this: *mut core::ffi::c_void,
29883            kind: *mut COREWEBVIEW2_PROCESS_KIND,
29884        ) -> windows_core::HRESULT {
29885            unsafe {
29886                let this: &Identity =
29887                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29888                ICoreWebView2ProcessInfo_Impl::Kind(this, core::mem::transmute_copy(&kind)).into()
29889            }
29890        }
29891        Self {
29892            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29893            ProcessId: ProcessId::<Identity, OFFSET>,
29894            Kind: Kind::<Identity, OFFSET>,
29895        }
29896    }
29897    pub fn matches(iid: &windows_core::GUID) -> bool {
29898        iid == &<ICoreWebView2ProcessInfo as windows_core::Interface>::IID
29899    }
29900}
29901impl windows_core::RuntimeName for ICoreWebView2ProcessInfo {}
29902windows_core::imp::define_interface!(
29903    ICoreWebView2ProcessInfoCollection,
29904    ICoreWebView2ProcessInfoCollection_Vtbl,
29905    0x402b99cd_a0cc_4fa5_b7a5_51d86a1d2339
29906);
29907windows_core::imp::interface_hierarchy!(ICoreWebView2ProcessInfoCollection, windows_core::IUnknown);
29908impl ICoreWebView2ProcessInfoCollection {
29909    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
29910        unsafe {
29911            (windows_core::Interface::vtable(self).Count)(
29912                windows_core::Interface::as_raw(self),
29913                value as _,
29914            )
29915            .ok()
29916        }
29917    }
29918    pub unsafe fn GetValueAtIndex(
29919        &self,
29920        index: u32,
29921    ) -> windows_core::Result<ICoreWebView2ProcessInfo> {
29922        unsafe {
29923            let mut result__ = core::mem::zeroed();
29924            (windows_core::Interface::vtable(self).GetValueAtIndex)(
29925                windows_core::Interface::as_raw(self),
29926                index,
29927                &mut result__,
29928            )
29929            .and_then(|| windows_core::Type::from_abi(result__))
29930        }
29931    }
29932}
29933#[repr(C)]
29934#[doc(hidden)]
29935pub struct ICoreWebView2ProcessInfoCollection_Vtbl {
29936    pub base__: windows_core::IUnknown_Vtbl,
29937    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
29938    pub GetValueAtIndex: unsafe extern "system" fn(
29939        *mut core::ffi::c_void,
29940        u32,
29941        *mut *mut core::ffi::c_void,
29942    ) -> windows_core::HRESULT,
29943}
29944pub trait ICoreWebView2ProcessInfoCollection_Impl: windows_core::IUnknownImpl {
29945    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
29946    fn GetValueAtIndex(&self, index: u32) -> windows_core::Result<ICoreWebView2ProcessInfo>;
29947}
29948impl ICoreWebView2ProcessInfoCollection_Vtbl {
29949    pub const fn new<Identity: ICoreWebView2ProcessInfoCollection_Impl, const OFFSET: isize>(
29950    ) -> Self {
29951        unsafe extern "system" fn Count<
29952            Identity: ICoreWebView2ProcessInfoCollection_Impl,
29953            const OFFSET: isize,
29954        >(
29955            this: *mut core::ffi::c_void,
29956            value: *mut u32,
29957        ) -> windows_core::HRESULT {
29958            unsafe {
29959                let this: &Identity =
29960                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29961                ICoreWebView2ProcessInfoCollection_Impl::Count(
29962                    this,
29963                    core::mem::transmute_copy(&value),
29964                )
29965                .into()
29966            }
29967        }
29968        unsafe extern "system" fn GetValueAtIndex<
29969            Identity: ICoreWebView2ProcessInfoCollection_Impl,
29970            const OFFSET: isize,
29971        >(
29972            this: *mut core::ffi::c_void,
29973            index: u32,
29974            value: *mut *mut core::ffi::c_void,
29975        ) -> windows_core::HRESULT {
29976            unsafe {
29977                let this: &Identity =
29978                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29979                match ICoreWebView2ProcessInfoCollection_Impl::GetValueAtIndex(
29980                    this,
29981                    core::mem::transmute_copy(&index),
29982                ) {
29983                    Ok(ok__) => {
29984                        value.write(core::mem::transmute(ok__));
29985                        windows_core::HRESULT(0)
29986                    }
29987                    Err(err) => err.into(),
29988                }
29989            }
29990        }
29991        Self {
29992            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29993            Count: Count::<Identity, OFFSET>,
29994            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
29995        }
29996    }
29997    pub fn matches(iid: &windows_core::GUID) -> bool {
29998        iid == &<ICoreWebView2ProcessInfoCollection as windows_core::Interface>::IID
29999    }
30000}
30001impl windows_core::RuntimeName for ICoreWebView2ProcessInfoCollection {}
30002windows_core::imp::define_interface!(
30003    ICoreWebView2ProcessInfosChangedEventHandler,
30004    ICoreWebView2ProcessInfosChangedEventHandler_Vtbl,
30005    0xf4af0c39_44b9_40e9_8b11_0484cfb9e0a1
30006);
30007windows_core::imp::interface_hierarchy!(
30008    ICoreWebView2ProcessInfosChangedEventHandler,
30009    windows_core::IUnknown
30010);
30011impl ICoreWebView2ProcessInfosChangedEventHandler {
30012    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
30013    where
30014        P0: windows_core::Param<ICoreWebView2Environment>,
30015        P1: windows_core::Param<windows_core::IUnknown>,
30016    {
30017        unsafe {
30018            (windows_core::Interface::vtable(self).Invoke)(
30019                windows_core::Interface::as_raw(self),
30020                sender.param().abi(),
30021                args.param().abi(),
30022            )
30023            .ok()
30024        }
30025    }
30026}
30027#[repr(C)]
30028#[doc(hidden)]
30029pub struct ICoreWebView2ProcessInfosChangedEventHandler_Vtbl {
30030    pub base__: windows_core::IUnknown_Vtbl,
30031    pub Invoke: unsafe extern "system" fn(
30032        *mut core::ffi::c_void,
30033        *mut core::ffi::c_void,
30034        *mut core::ffi::c_void,
30035    ) -> windows_core::HRESULT,
30036}
30037pub trait ICoreWebView2ProcessInfosChangedEventHandler_Impl: windows_core::IUnknownImpl {
30038    fn Invoke(
30039        &self,
30040        sender: windows_core::Ref<'_, ICoreWebView2Environment>,
30041        args: windows_core::Ref<'_, windows_core::IUnknown>,
30042    ) -> windows_core::Result<()>;
30043}
30044impl ICoreWebView2ProcessInfosChangedEventHandler_Vtbl {
30045    pub const fn new<
30046        Identity: ICoreWebView2ProcessInfosChangedEventHandler_Impl,
30047        const OFFSET: isize,
30048    >() -> Self {
30049        unsafe extern "system" fn Invoke<
30050            Identity: ICoreWebView2ProcessInfosChangedEventHandler_Impl,
30051            const OFFSET: isize,
30052        >(
30053            this: *mut core::ffi::c_void,
30054            sender: *mut core::ffi::c_void,
30055            args: *mut core::ffi::c_void,
30056        ) -> windows_core::HRESULT {
30057            unsafe {
30058                let this: &Identity =
30059                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30060                ICoreWebView2ProcessInfosChangedEventHandler_Impl::Invoke(
30061                    this,
30062                    core::mem::transmute_copy(&sender),
30063                    core::mem::transmute_copy(&args),
30064                )
30065                .into()
30066            }
30067        }
30068        Self {
30069            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
30070            Invoke: Invoke::<Identity, OFFSET>,
30071        }
30072    }
30073    pub fn matches(iid: &windows_core::GUID) -> bool {
30074        iid == &<ICoreWebView2ProcessInfosChangedEventHandler as windows_core::Interface>::IID
30075    }
30076}
30077impl windows_core::RuntimeName for ICoreWebView2ProcessInfosChangedEventHandler {}
30078windows_core::imp::define_interface!(
30079    ICoreWebView2Profile,
30080    ICoreWebView2Profile_Vtbl,
30081    0x79110ad3_cd5d_4373_8bc3_c60658f17a5f
30082);
30083windows_core::imp::interface_hierarchy!(ICoreWebView2Profile, windows_core::IUnknown);
30084impl ICoreWebView2Profile {
30085    pub unsafe fn ProfileName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
30086        unsafe {
30087            (windows_core::Interface::vtable(self).ProfileName)(
30088                windows_core::Interface::as_raw(self),
30089                value as _,
30090            )
30091            .ok()
30092        }
30093    }
30094    pub unsafe fn IsInPrivateModeEnabled(
30095        &self,
30096        value: *mut windows_core::BOOL,
30097    ) -> windows_core::Result<()> {
30098        unsafe {
30099            (windows_core::Interface::vtable(self).IsInPrivateModeEnabled)(
30100                windows_core::Interface::as_raw(self),
30101                value as _,
30102            )
30103            .ok()
30104        }
30105    }
30106    pub unsafe fn ProfilePath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
30107        unsafe {
30108            (windows_core::Interface::vtable(self).ProfilePath)(
30109                windows_core::Interface::as_raw(self),
30110                value as _,
30111            )
30112            .ok()
30113        }
30114    }
30115    pub unsafe fn DefaultDownloadFolderPath(
30116        &self,
30117        value: *mut windows_core::PWSTR,
30118    ) -> windows_core::Result<()> {
30119        unsafe {
30120            (windows_core::Interface::vtable(self).DefaultDownloadFolderPath)(
30121                windows_core::Interface::as_raw(self),
30122                value as _,
30123            )
30124            .ok()
30125        }
30126    }
30127    pub unsafe fn SetDefaultDownloadFolderPath<P0>(&self, value: P0) -> windows_core::Result<()>
30128    where
30129        P0: windows_core::Param<windows_core::PCWSTR>,
30130    {
30131        unsafe {
30132            (windows_core::Interface::vtable(self).SetDefaultDownloadFolderPath)(
30133                windows_core::Interface::as_raw(self),
30134                value.param().abi(),
30135            )
30136            .ok()
30137        }
30138    }
30139    pub unsafe fn PreferredColorScheme(
30140        &self,
30141        value: *mut COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30142    ) -> windows_core::Result<()> {
30143        unsafe {
30144            (windows_core::Interface::vtable(self).PreferredColorScheme)(
30145                windows_core::Interface::as_raw(self),
30146                value as _,
30147            )
30148            .ok()
30149        }
30150    }
30151    pub unsafe fn SetPreferredColorScheme(
30152        &self,
30153        value: COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30154    ) -> windows_core::Result<()> {
30155        unsafe {
30156            (windows_core::Interface::vtable(self).SetPreferredColorScheme)(
30157                windows_core::Interface::as_raw(self),
30158                value,
30159            )
30160            .ok()
30161        }
30162    }
30163}
30164#[repr(C)]
30165#[doc(hidden)]
30166pub struct ICoreWebView2Profile_Vtbl {
30167    pub base__: windows_core::IUnknown_Vtbl,
30168    pub ProfileName: unsafe extern "system" fn(
30169        *mut core::ffi::c_void,
30170        *mut windows_core::PWSTR,
30171    ) -> windows_core::HRESULT,
30172    pub IsInPrivateModeEnabled: unsafe extern "system" fn(
30173        *mut core::ffi::c_void,
30174        *mut windows_core::BOOL,
30175    ) -> windows_core::HRESULT,
30176    pub ProfilePath: unsafe extern "system" fn(
30177        *mut core::ffi::c_void,
30178        *mut windows_core::PWSTR,
30179    ) -> windows_core::HRESULT,
30180    pub DefaultDownloadFolderPath: unsafe extern "system" fn(
30181        *mut core::ffi::c_void,
30182        *mut windows_core::PWSTR,
30183    ) -> windows_core::HRESULT,
30184    pub SetDefaultDownloadFolderPath: unsafe extern "system" fn(
30185        *mut core::ffi::c_void,
30186        windows_core::PCWSTR,
30187    ) -> windows_core::HRESULT,
30188    pub PreferredColorScheme: unsafe extern "system" fn(
30189        *mut core::ffi::c_void,
30190        *mut COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30191    ) -> windows_core::HRESULT,
30192    pub SetPreferredColorScheme: unsafe extern "system" fn(
30193        *mut core::ffi::c_void,
30194        COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30195    ) -> windows_core::HRESULT,
30196}
30197pub trait ICoreWebView2Profile_Impl: windows_core::IUnknownImpl {
30198    fn ProfileName(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
30199    fn IsInPrivateModeEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
30200    fn ProfilePath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
30201    fn DefaultDownloadFolderPath(
30202        &self,
30203        value: *mut windows_core::PWSTR,
30204    ) -> windows_core::Result<()>;
30205    fn SetDefaultDownloadFolderPath(
30206        &self,
30207        value: &windows_core::PCWSTR,
30208    ) -> windows_core::Result<()>;
30209    fn PreferredColorScheme(
30210        &self,
30211        value: *mut COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30212    ) -> windows_core::Result<()>;
30213    fn SetPreferredColorScheme(
30214        &self,
30215        value: COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30216    ) -> windows_core::Result<()>;
30217}
30218impl ICoreWebView2Profile_Vtbl {
30219    pub const fn new<Identity: ICoreWebView2Profile_Impl, const OFFSET: isize>() -> Self {
30220        unsafe extern "system" fn ProfileName<
30221            Identity: ICoreWebView2Profile_Impl,
30222            const OFFSET: isize,
30223        >(
30224            this: *mut core::ffi::c_void,
30225            value: *mut windows_core::PWSTR,
30226        ) -> windows_core::HRESULT {
30227            unsafe {
30228                let this: &Identity =
30229                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30230                ICoreWebView2Profile_Impl::ProfileName(this, core::mem::transmute_copy(&value))
30231                    .into()
30232            }
30233        }
30234        unsafe extern "system" fn IsInPrivateModeEnabled<
30235            Identity: ICoreWebView2Profile_Impl,
30236            const OFFSET: isize,
30237        >(
30238            this: *mut core::ffi::c_void,
30239            value: *mut windows_core::BOOL,
30240        ) -> windows_core::HRESULT {
30241            unsafe {
30242                let this: &Identity =
30243                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30244                ICoreWebView2Profile_Impl::IsInPrivateModeEnabled(
30245                    this,
30246                    core::mem::transmute_copy(&value),
30247                )
30248                .into()
30249            }
30250        }
30251        unsafe extern "system" fn ProfilePath<
30252            Identity: ICoreWebView2Profile_Impl,
30253            const OFFSET: isize,
30254        >(
30255            this: *mut core::ffi::c_void,
30256            value: *mut windows_core::PWSTR,
30257        ) -> windows_core::HRESULT {
30258            unsafe {
30259                let this: &Identity =
30260                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30261                ICoreWebView2Profile_Impl::ProfilePath(this, core::mem::transmute_copy(&value))
30262                    .into()
30263            }
30264        }
30265        unsafe extern "system" fn DefaultDownloadFolderPath<
30266            Identity: ICoreWebView2Profile_Impl,
30267            const OFFSET: isize,
30268        >(
30269            this: *mut core::ffi::c_void,
30270            value: *mut windows_core::PWSTR,
30271        ) -> windows_core::HRESULT {
30272            unsafe {
30273                let this: &Identity =
30274                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30275                ICoreWebView2Profile_Impl::DefaultDownloadFolderPath(
30276                    this,
30277                    core::mem::transmute_copy(&value),
30278                )
30279                .into()
30280            }
30281        }
30282        unsafe extern "system" fn SetDefaultDownloadFolderPath<
30283            Identity: ICoreWebView2Profile_Impl,
30284            const OFFSET: isize,
30285        >(
30286            this: *mut core::ffi::c_void,
30287            value: windows_core::PCWSTR,
30288        ) -> windows_core::HRESULT {
30289            unsafe {
30290                let this: &Identity =
30291                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30292                ICoreWebView2Profile_Impl::SetDefaultDownloadFolderPath(
30293                    this,
30294                    core::mem::transmute(&value),
30295                )
30296                .into()
30297            }
30298        }
30299        unsafe extern "system" fn PreferredColorScheme<
30300            Identity: ICoreWebView2Profile_Impl,
30301            const OFFSET: isize,
30302        >(
30303            this: *mut core::ffi::c_void,
30304            value: *mut COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30305        ) -> windows_core::HRESULT {
30306            unsafe {
30307                let this: &Identity =
30308                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30309                ICoreWebView2Profile_Impl::PreferredColorScheme(
30310                    this,
30311                    core::mem::transmute_copy(&value),
30312                )
30313                .into()
30314            }
30315        }
30316        unsafe extern "system" fn SetPreferredColorScheme<
30317            Identity: ICoreWebView2Profile_Impl,
30318            const OFFSET: isize,
30319        >(
30320            this: *mut core::ffi::c_void,
30321            value: COREWEBVIEW2_PREFERRED_COLOR_SCHEME,
30322        ) -> windows_core::HRESULT {
30323            unsafe {
30324                let this: &Identity =
30325                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30326                ICoreWebView2Profile_Impl::SetPreferredColorScheme(
30327                    this,
30328                    core::mem::transmute_copy(&value),
30329                )
30330                .into()
30331            }
30332        }
30333        Self {
30334            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
30335            ProfileName: ProfileName::<Identity, OFFSET>,
30336            IsInPrivateModeEnabled: IsInPrivateModeEnabled::<Identity, OFFSET>,
30337            ProfilePath: ProfilePath::<Identity, OFFSET>,
30338            DefaultDownloadFolderPath: DefaultDownloadFolderPath::<Identity, OFFSET>,
30339            SetDefaultDownloadFolderPath: SetDefaultDownloadFolderPath::<Identity, OFFSET>,
30340            PreferredColorScheme: PreferredColorScheme::<Identity, OFFSET>,
30341            SetPreferredColorScheme: SetPreferredColorScheme::<Identity, OFFSET>,
30342        }
30343    }
30344    pub fn matches(iid: &windows_core::GUID) -> bool {
30345        iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
30346    }
30347}
30348impl windows_core::RuntimeName for ICoreWebView2Profile {}
30349windows_core::imp::define_interface!(
30350    ICoreWebView2Profile2,
30351    ICoreWebView2Profile2_Vtbl,
30352    0xfa740d4b_5eae_4344_a8ad_74be31925397
30353);
30354impl core::ops::Deref for ICoreWebView2Profile2 {
30355    type Target = ICoreWebView2Profile;
30356    fn deref(&self) -> &Self::Target {
30357        unsafe { core::mem::transmute(self) }
30358    }
30359}
30360windows_core::imp::interface_hierarchy!(
30361    ICoreWebView2Profile2,
30362    windows_core::IUnknown,
30363    ICoreWebView2Profile
30364);
30365impl ICoreWebView2Profile2 {
30366    pub unsafe fn ClearBrowsingData<P1>(
30367        &self,
30368        datakinds: COREWEBVIEW2_BROWSING_DATA_KINDS,
30369        handler: P1,
30370    ) -> windows_core::Result<()>
30371    where
30372        P1: windows_core::Param<ICoreWebView2ClearBrowsingDataCompletedHandler>,
30373    {
30374        unsafe {
30375            (windows_core::Interface::vtable(self).ClearBrowsingData)(
30376                windows_core::Interface::as_raw(self),
30377                datakinds,
30378                handler.param().abi(),
30379            )
30380            .ok()
30381        }
30382    }
30383    pub unsafe fn ClearBrowsingDataInTimeRange<P3>(
30384        &self,
30385        datakinds: COREWEBVIEW2_BROWSING_DATA_KINDS,
30386        starttime: f64,
30387        endtime: f64,
30388        handler: P3,
30389    ) -> windows_core::Result<()>
30390    where
30391        P3: windows_core::Param<ICoreWebView2ClearBrowsingDataCompletedHandler>,
30392    {
30393        unsafe {
30394            (windows_core::Interface::vtable(self).ClearBrowsingDataInTimeRange)(
30395                windows_core::Interface::as_raw(self),
30396                datakinds,
30397                starttime,
30398                endtime,
30399                handler.param().abi(),
30400            )
30401            .ok()
30402        }
30403    }
30404    pub unsafe fn ClearBrowsingDataAll<P0>(&self, handler: P0) -> windows_core::Result<()>
30405    where
30406        P0: windows_core::Param<ICoreWebView2ClearBrowsingDataCompletedHandler>,
30407    {
30408        unsafe {
30409            (windows_core::Interface::vtable(self).ClearBrowsingDataAll)(
30410                windows_core::Interface::as_raw(self),
30411                handler.param().abi(),
30412            )
30413            .ok()
30414        }
30415    }
30416}
30417#[repr(C)]
30418#[doc(hidden)]
30419pub struct ICoreWebView2Profile2_Vtbl {
30420    pub base__: ICoreWebView2Profile_Vtbl,
30421    pub ClearBrowsingData: unsafe extern "system" fn(
30422        *mut core::ffi::c_void,
30423        COREWEBVIEW2_BROWSING_DATA_KINDS,
30424        *mut core::ffi::c_void,
30425    ) -> windows_core::HRESULT,
30426    pub ClearBrowsingDataInTimeRange: unsafe extern "system" fn(
30427        *mut core::ffi::c_void,
30428        COREWEBVIEW2_BROWSING_DATA_KINDS,
30429        f64,
30430        f64,
30431        *mut core::ffi::c_void,
30432    ) -> windows_core::HRESULT,
30433    pub ClearBrowsingDataAll: unsafe extern "system" fn(
30434        *mut core::ffi::c_void,
30435        *mut core::ffi::c_void,
30436    ) -> windows_core::HRESULT,
30437}
30438pub trait ICoreWebView2Profile2_Impl: ICoreWebView2Profile_Impl {
30439    fn ClearBrowsingData(
30440        &self,
30441        datakinds: COREWEBVIEW2_BROWSING_DATA_KINDS,
30442        handler: windows_core::Ref<'_, ICoreWebView2ClearBrowsingDataCompletedHandler>,
30443    ) -> windows_core::Result<()>;
30444    fn ClearBrowsingDataInTimeRange(
30445        &self,
30446        datakinds: COREWEBVIEW2_BROWSING_DATA_KINDS,
30447        starttime: f64,
30448        endtime: f64,
30449        handler: windows_core::Ref<'_, ICoreWebView2ClearBrowsingDataCompletedHandler>,
30450    ) -> windows_core::Result<()>;
30451    fn ClearBrowsingDataAll(
30452        &self,
30453        handler: windows_core::Ref<'_, ICoreWebView2ClearBrowsingDataCompletedHandler>,
30454    ) -> windows_core::Result<()>;
30455}
30456impl ICoreWebView2Profile2_Vtbl {
30457    pub const fn new<Identity: ICoreWebView2Profile2_Impl, const OFFSET: isize>() -> Self {
30458        unsafe extern "system" fn ClearBrowsingData<
30459            Identity: ICoreWebView2Profile2_Impl,
30460            const OFFSET: isize,
30461        >(
30462            this: *mut core::ffi::c_void,
30463            datakinds: COREWEBVIEW2_BROWSING_DATA_KINDS,
30464            handler: *mut core::ffi::c_void,
30465        ) -> windows_core::HRESULT {
30466            unsafe {
30467                let this: &Identity =
30468                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30469                ICoreWebView2Profile2_Impl::ClearBrowsingData(
30470                    this,
30471                    core::mem::transmute_copy(&datakinds),
30472                    core::mem::transmute_copy(&handler),
30473                )
30474                .into()
30475            }
30476        }
30477        unsafe extern "system" fn ClearBrowsingDataInTimeRange<
30478            Identity: ICoreWebView2Profile2_Impl,
30479            const OFFSET: isize,
30480        >(
30481            this: *mut core::ffi::c_void,
30482            datakinds: COREWEBVIEW2_BROWSING_DATA_KINDS,
30483            starttime: f64,
30484            endtime: f64,
30485            handler: *mut core::ffi::c_void,
30486        ) -> windows_core::HRESULT {
30487            unsafe {
30488                let this: &Identity =
30489                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30490                ICoreWebView2Profile2_Impl::ClearBrowsingDataInTimeRange(
30491                    this,
30492                    core::mem::transmute_copy(&datakinds),
30493                    core::mem::transmute_copy(&starttime),
30494                    core::mem::transmute_copy(&endtime),
30495                    core::mem::transmute_copy(&handler),
30496                )
30497                .into()
30498            }
30499        }
30500        unsafe extern "system" fn ClearBrowsingDataAll<
30501            Identity: ICoreWebView2Profile2_Impl,
30502            const OFFSET: isize,
30503        >(
30504            this: *mut core::ffi::c_void,
30505            handler: *mut core::ffi::c_void,
30506        ) -> windows_core::HRESULT {
30507            unsafe {
30508                let this: &Identity =
30509                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30510                ICoreWebView2Profile2_Impl::ClearBrowsingDataAll(
30511                    this,
30512                    core::mem::transmute_copy(&handler),
30513                )
30514                .into()
30515            }
30516        }
30517        Self {
30518            base__: ICoreWebView2Profile_Vtbl::new::<Identity, OFFSET>(),
30519            ClearBrowsingData: ClearBrowsingData::<Identity, OFFSET>,
30520            ClearBrowsingDataInTimeRange: ClearBrowsingDataInTimeRange::<Identity, OFFSET>,
30521            ClearBrowsingDataAll: ClearBrowsingDataAll::<Identity, OFFSET>,
30522        }
30523    }
30524    pub fn matches(iid: &windows_core::GUID) -> bool {
30525        iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
30526            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
30527    }
30528}
30529impl windows_core::RuntimeName for ICoreWebView2Profile2 {}
30530windows_core::imp::define_interface!(
30531    ICoreWebView2Profile3,
30532    ICoreWebView2Profile3_Vtbl,
30533    0xb188e659_5685_4e05_bdba_fc640e0f1992
30534);
30535impl core::ops::Deref for ICoreWebView2Profile3 {
30536    type Target = ICoreWebView2Profile2;
30537    fn deref(&self) -> &Self::Target {
30538        unsafe { core::mem::transmute(self) }
30539    }
30540}
30541windows_core::imp::interface_hierarchy!(
30542    ICoreWebView2Profile3,
30543    windows_core::IUnknown,
30544    ICoreWebView2Profile,
30545    ICoreWebView2Profile2
30546);
30547impl ICoreWebView2Profile3 {
30548    pub unsafe fn PreferredTrackingPreventionLevel(
30549        &self,
30550        value: *mut COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30551    ) -> windows_core::Result<()> {
30552        unsafe {
30553            (windows_core::Interface::vtable(self).PreferredTrackingPreventionLevel)(
30554                windows_core::Interface::as_raw(self),
30555                value as _,
30556            )
30557            .ok()
30558        }
30559    }
30560    pub unsafe fn SetPreferredTrackingPreventionLevel(
30561        &self,
30562        value: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30563    ) -> windows_core::Result<()> {
30564        unsafe {
30565            (windows_core::Interface::vtable(self).SetPreferredTrackingPreventionLevel)(
30566                windows_core::Interface::as_raw(self),
30567                value,
30568            )
30569            .ok()
30570        }
30571    }
30572}
30573#[repr(C)]
30574#[doc(hidden)]
30575pub struct ICoreWebView2Profile3_Vtbl {
30576    pub base__: ICoreWebView2Profile2_Vtbl,
30577    pub PreferredTrackingPreventionLevel: unsafe extern "system" fn(
30578        *mut core::ffi::c_void,
30579        *mut COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30580    ) -> windows_core::HRESULT,
30581    pub SetPreferredTrackingPreventionLevel: unsafe extern "system" fn(
30582        *mut core::ffi::c_void,
30583        COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30584    )
30585        -> windows_core::HRESULT,
30586}
30587pub trait ICoreWebView2Profile3_Impl: ICoreWebView2Profile2_Impl {
30588    fn PreferredTrackingPreventionLevel(
30589        &self,
30590        value: *mut COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30591    ) -> windows_core::Result<()>;
30592    fn SetPreferredTrackingPreventionLevel(
30593        &self,
30594        value: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30595    ) -> windows_core::Result<()>;
30596}
30597impl ICoreWebView2Profile3_Vtbl {
30598    pub const fn new<Identity: ICoreWebView2Profile3_Impl, const OFFSET: isize>() -> Self {
30599        unsafe extern "system" fn PreferredTrackingPreventionLevel<
30600            Identity: ICoreWebView2Profile3_Impl,
30601            const OFFSET: isize,
30602        >(
30603            this: *mut core::ffi::c_void,
30604            value: *mut COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30605        ) -> windows_core::HRESULT {
30606            unsafe {
30607                let this: &Identity =
30608                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30609                ICoreWebView2Profile3_Impl::PreferredTrackingPreventionLevel(
30610                    this,
30611                    core::mem::transmute_copy(&value),
30612                )
30613                .into()
30614            }
30615        }
30616        unsafe extern "system" fn SetPreferredTrackingPreventionLevel<
30617            Identity: ICoreWebView2Profile3_Impl,
30618            const OFFSET: isize,
30619        >(
30620            this: *mut core::ffi::c_void,
30621            value: COREWEBVIEW2_TRACKING_PREVENTION_LEVEL,
30622        ) -> windows_core::HRESULT {
30623            unsafe {
30624                let this: &Identity =
30625                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30626                ICoreWebView2Profile3_Impl::SetPreferredTrackingPreventionLevel(
30627                    this,
30628                    core::mem::transmute_copy(&value),
30629                )
30630                .into()
30631            }
30632        }
30633        Self {
30634            base__: ICoreWebView2Profile2_Vtbl::new::<Identity, OFFSET>(),
30635            PreferredTrackingPreventionLevel: PreferredTrackingPreventionLevel::<Identity, OFFSET>,
30636            SetPreferredTrackingPreventionLevel: SetPreferredTrackingPreventionLevel::<
30637                Identity,
30638                OFFSET,
30639            >,
30640        }
30641    }
30642    pub fn matches(iid: &windows_core::GUID) -> bool {
30643        iid == &<ICoreWebView2Profile3 as windows_core::Interface>::IID
30644            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
30645            || iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
30646    }
30647}
30648impl windows_core::RuntimeName for ICoreWebView2Profile3 {}
30649windows_core::imp::define_interface!(
30650    ICoreWebView2Profile4,
30651    ICoreWebView2Profile4_Vtbl,
30652    0x8f4ae680_192e_4ec8_833a_21cfadaef628
30653);
30654impl core::ops::Deref for ICoreWebView2Profile4 {
30655    type Target = ICoreWebView2Profile3;
30656    fn deref(&self) -> &Self::Target {
30657        unsafe { core::mem::transmute(self) }
30658    }
30659}
30660windows_core::imp::interface_hierarchy!(
30661    ICoreWebView2Profile4,
30662    windows_core::IUnknown,
30663    ICoreWebView2Profile,
30664    ICoreWebView2Profile2,
30665    ICoreWebView2Profile3
30666);
30667impl ICoreWebView2Profile4 {
30668    pub unsafe fn SetPermissionState<P1, P3>(
30669        &self,
30670        permissionkind: COREWEBVIEW2_PERMISSION_KIND,
30671        origin: P1,
30672        state: COREWEBVIEW2_PERMISSION_STATE,
30673        handler: P3,
30674    ) -> windows_core::Result<()>
30675    where
30676        P1: windows_core::Param<windows_core::PCWSTR>,
30677        P3: windows_core::Param<ICoreWebView2SetPermissionStateCompletedHandler>,
30678    {
30679        unsafe {
30680            (windows_core::Interface::vtable(self).SetPermissionState)(
30681                windows_core::Interface::as_raw(self),
30682                permissionkind,
30683                origin.param().abi(),
30684                state,
30685                handler.param().abi(),
30686            )
30687            .ok()
30688        }
30689    }
30690    pub unsafe fn GetNonDefaultPermissionSettings<P0>(
30691        &self,
30692        handler: P0,
30693    ) -> windows_core::Result<()>
30694    where
30695        P0: windows_core::Param<ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler>,
30696    {
30697        unsafe {
30698            (windows_core::Interface::vtable(self).GetNonDefaultPermissionSettings)(
30699                windows_core::Interface::as_raw(self),
30700                handler.param().abi(),
30701            )
30702            .ok()
30703        }
30704    }
30705}
30706#[repr(C)]
30707#[doc(hidden)]
30708pub struct ICoreWebView2Profile4_Vtbl {
30709    pub base__: ICoreWebView2Profile3_Vtbl,
30710    pub SetPermissionState: unsafe extern "system" fn(
30711        *mut core::ffi::c_void,
30712        COREWEBVIEW2_PERMISSION_KIND,
30713        windows_core::PCWSTR,
30714        COREWEBVIEW2_PERMISSION_STATE,
30715        *mut core::ffi::c_void,
30716    ) -> windows_core::HRESULT,
30717    pub GetNonDefaultPermissionSettings: unsafe extern "system" fn(
30718        *mut core::ffi::c_void,
30719        *mut core::ffi::c_void,
30720    ) -> windows_core::HRESULT,
30721}
30722pub trait ICoreWebView2Profile4_Impl: ICoreWebView2Profile3_Impl {
30723    fn SetPermissionState(
30724        &self,
30725        permissionkind: COREWEBVIEW2_PERMISSION_KIND,
30726        origin: &windows_core::PCWSTR,
30727        state: COREWEBVIEW2_PERMISSION_STATE,
30728        handler: windows_core::Ref<'_, ICoreWebView2SetPermissionStateCompletedHandler>,
30729    ) -> windows_core::Result<()>;
30730    fn GetNonDefaultPermissionSettings(
30731        &self,
30732        handler: windows_core::Ref<
30733            '_,
30734            ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler,
30735        >,
30736    ) -> windows_core::Result<()>;
30737}
30738impl ICoreWebView2Profile4_Vtbl {
30739    pub const fn new<Identity: ICoreWebView2Profile4_Impl, const OFFSET: isize>() -> Self {
30740        unsafe extern "system" fn SetPermissionState<
30741            Identity: ICoreWebView2Profile4_Impl,
30742            const OFFSET: isize,
30743        >(
30744            this: *mut core::ffi::c_void,
30745            permissionkind: COREWEBVIEW2_PERMISSION_KIND,
30746            origin: windows_core::PCWSTR,
30747            state: COREWEBVIEW2_PERMISSION_STATE,
30748            handler: *mut core::ffi::c_void,
30749        ) -> windows_core::HRESULT {
30750            unsafe {
30751                let this: &Identity =
30752                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30753                ICoreWebView2Profile4_Impl::SetPermissionState(
30754                    this,
30755                    core::mem::transmute_copy(&permissionkind),
30756                    core::mem::transmute(&origin),
30757                    core::mem::transmute_copy(&state),
30758                    core::mem::transmute_copy(&handler),
30759                )
30760                .into()
30761            }
30762        }
30763        unsafe extern "system" fn GetNonDefaultPermissionSettings<
30764            Identity: ICoreWebView2Profile4_Impl,
30765            const OFFSET: isize,
30766        >(
30767            this: *mut core::ffi::c_void,
30768            handler: *mut core::ffi::c_void,
30769        ) -> windows_core::HRESULT {
30770            unsafe {
30771                let this: &Identity =
30772                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30773                ICoreWebView2Profile4_Impl::GetNonDefaultPermissionSettings(
30774                    this,
30775                    core::mem::transmute_copy(&handler),
30776                )
30777                .into()
30778            }
30779        }
30780        Self {
30781            base__: ICoreWebView2Profile3_Vtbl::new::<Identity, OFFSET>(),
30782            SetPermissionState: SetPermissionState::<Identity, OFFSET>,
30783            GetNonDefaultPermissionSettings: GetNonDefaultPermissionSettings::<Identity, OFFSET>,
30784        }
30785    }
30786    pub fn matches(iid: &windows_core::GUID) -> bool {
30787        iid == &<ICoreWebView2Profile4 as windows_core::Interface>::IID
30788            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
30789            || iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
30790            || iid == &<ICoreWebView2Profile3 as windows_core::Interface>::IID
30791    }
30792}
30793impl windows_core::RuntimeName for ICoreWebView2Profile4 {}
30794windows_core::imp::define_interface!(
30795    ICoreWebView2Profile5,
30796    ICoreWebView2Profile5_Vtbl,
30797    0x2ee5b76e_6e80_4df2_bcd3_d4ec3340a01b
30798);
30799impl core::ops::Deref for ICoreWebView2Profile5 {
30800    type Target = ICoreWebView2Profile4;
30801    fn deref(&self) -> &Self::Target {
30802        unsafe { core::mem::transmute(self) }
30803    }
30804}
30805windows_core::imp::interface_hierarchy!(
30806    ICoreWebView2Profile5,
30807    windows_core::IUnknown,
30808    ICoreWebView2Profile,
30809    ICoreWebView2Profile2,
30810    ICoreWebView2Profile3,
30811    ICoreWebView2Profile4
30812);
30813impl ICoreWebView2Profile5 {
30814    pub unsafe fn CookieManager(&self) -> windows_core::Result<ICoreWebView2CookieManager> {
30815        unsafe {
30816            let mut result__ = core::mem::zeroed();
30817            (windows_core::Interface::vtable(self).CookieManager)(
30818                windows_core::Interface::as_raw(self),
30819                &mut result__,
30820            )
30821            .and_then(|| windows_core::Type::from_abi(result__))
30822        }
30823    }
30824}
30825#[repr(C)]
30826#[doc(hidden)]
30827pub struct ICoreWebView2Profile5_Vtbl {
30828    pub base__: ICoreWebView2Profile4_Vtbl,
30829    pub CookieManager: unsafe extern "system" fn(
30830        *mut core::ffi::c_void,
30831        *mut *mut core::ffi::c_void,
30832    ) -> windows_core::HRESULT,
30833}
30834pub trait ICoreWebView2Profile5_Impl: ICoreWebView2Profile4_Impl {
30835    fn CookieManager(&self) -> windows_core::Result<ICoreWebView2CookieManager>;
30836}
30837impl ICoreWebView2Profile5_Vtbl {
30838    pub const fn new<Identity: ICoreWebView2Profile5_Impl, const OFFSET: isize>() -> Self {
30839        unsafe extern "system" fn CookieManager<
30840            Identity: ICoreWebView2Profile5_Impl,
30841            const OFFSET: isize,
30842        >(
30843            this: *mut core::ffi::c_void,
30844            value: *mut *mut core::ffi::c_void,
30845        ) -> windows_core::HRESULT {
30846            unsafe {
30847                let this: &Identity =
30848                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30849                match ICoreWebView2Profile5_Impl::CookieManager(this) {
30850                    Ok(ok__) => {
30851                        value.write(core::mem::transmute(ok__));
30852                        windows_core::HRESULT(0)
30853                    }
30854                    Err(err) => err.into(),
30855                }
30856            }
30857        }
30858        Self {
30859            base__: ICoreWebView2Profile4_Vtbl::new::<Identity, OFFSET>(),
30860            CookieManager: CookieManager::<Identity, OFFSET>,
30861        }
30862    }
30863    pub fn matches(iid: &windows_core::GUID) -> bool {
30864        iid == &<ICoreWebView2Profile5 as windows_core::Interface>::IID
30865            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
30866            || iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
30867            || iid == &<ICoreWebView2Profile3 as windows_core::Interface>::IID
30868            || iid == &<ICoreWebView2Profile4 as windows_core::Interface>::IID
30869    }
30870}
30871impl windows_core::RuntimeName for ICoreWebView2Profile5 {}
30872windows_core::imp::define_interface!(
30873    ICoreWebView2Profile6,
30874    ICoreWebView2Profile6_Vtbl,
30875    0xbd82fa6a_1d65_4c33_b2b4_0393020cc61b
30876);
30877impl core::ops::Deref for ICoreWebView2Profile6 {
30878    type Target = ICoreWebView2Profile5;
30879    fn deref(&self) -> &Self::Target {
30880        unsafe { core::mem::transmute(self) }
30881    }
30882}
30883windows_core::imp::interface_hierarchy!(
30884    ICoreWebView2Profile6,
30885    windows_core::IUnknown,
30886    ICoreWebView2Profile,
30887    ICoreWebView2Profile2,
30888    ICoreWebView2Profile3,
30889    ICoreWebView2Profile4,
30890    ICoreWebView2Profile5
30891);
30892impl ICoreWebView2Profile6 {
30893    pub unsafe fn IsPasswordAutosaveEnabled(
30894        &self,
30895        value: *mut windows_core::BOOL,
30896    ) -> windows_core::Result<()> {
30897        unsafe {
30898            (windows_core::Interface::vtable(self).IsPasswordAutosaveEnabled)(
30899                windows_core::Interface::as_raw(self),
30900                value as _,
30901            )
30902            .ok()
30903        }
30904    }
30905    pub unsafe fn SetIsPasswordAutosaveEnabled(&self, value: bool) -> windows_core::Result<()> {
30906        unsafe {
30907            (windows_core::Interface::vtable(self).SetIsPasswordAutosaveEnabled)(
30908                windows_core::Interface::as_raw(self),
30909                value.into(),
30910            )
30911            .ok()
30912        }
30913    }
30914    pub unsafe fn IsGeneralAutofillEnabled(
30915        &self,
30916        value: *mut windows_core::BOOL,
30917    ) -> windows_core::Result<()> {
30918        unsafe {
30919            (windows_core::Interface::vtable(self).IsGeneralAutofillEnabled)(
30920                windows_core::Interface::as_raw(self),
30921                value as _,
30922            )
30923            .ok()
30924        }
30925    }
30926    pub unsafe fn SetIsGeneralAutofillEnabled(&self, value: bool) -> windows_core::Result<()> {
30927        unsafe {
30928            (windows_core::Interface::vtable(self).SetIsGeneralAutofillEnabled)(
30929                windows_core::Interface::as_raw(self),
30930                value.into(),
30931            )
30932            .ok()
30933        }
30934    }
30935}
30936#[repr(C)]
30937#[doc(hidden)]
30938pub struct ICoreWebView2Profile6_Vtbl {
30939    pub base__: ICoreWebView2Profile5_Vtbl,
30940    pub IsPasswordAutosaveEnabled: unsafe extern "system" fn(
30941        *mut core::ffi::c_void,
30942        *mut windows_core::BOOL,
30943    ) -> windows_core::HRESULT,
30944    pub SetIsPasswordAutosaveEnabled: unsafe extern "system" fn(
30945        *mut core::ffi::c_void,
30946        windows_core::BOOL,
30947    ) -> windows_core::HRESULT,
30948    pub IsGeneralAutofillEnabled: unsafe extern "system" fn(
30949        *mut core::ffi::c_void,
30950        *mut windows_core::BOOL,
30951    ) -> windows_core::HRESULT,
30952    pub SetIsGeneralAutofillEnabled: unsafe extern "system" fn(
30953        *mut core::ffi::c_void,
30954        windows_core::BOOL,
30955    ) -> windows_core::HRESULT,
30956}
30957pub trait ICoreWebView2Profile6_Impl: ICoreWebView2Profile5_Impl {
30958    fn IsPasswordAutosaveEnabled(&self, value: *mut windows_core::BOOL)
30959        -> windows_core::Result<()>;
30960    fn SetIsPasswordAutosaveEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
30961    fn IsGeneralAutofillEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
30962    fn SetIsGeneralAutofillEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
30963}
30964impl ICoreWebView2Profile6_Vtbl {
30965    pub const fn new<Identity: ICoreWebView2Profile6_Impl, const OFFSET: isize>() -> Self {
30966        unsafe extern "system" fn IsPasswordAutosaveEnabled<
30967            Identity: ICoreWebView2Profile6_Impl,
30968            const OFFSET: isize,
30969        >(
30970            this: *mut core::ffi::c_void,
30971            value: *mut windows_core::BOOL,
30972        ) -> windows_core::HRESULT {
30973            unsafe {
30974                let this: &Identity =
30975                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30976                ICoreWebView2Profile6_Impl::IsPasswordAutosaveEnabled(
30977                    this,
30978                    core::mem::transmute_copy(&value),
30979                )
30980                .into()
30981            }
30982        }
30983        unsafe extern "system" fn SetIsPasswordAutosaveEnabled<
30984            Identity: ICoreWebView2Profile6_Impl,
30985            const OFFSET: isize,
30986        >(
30987            this: *mut core::ffi::c_void,
30988            value: windows_core::BOOL,
30989        ) -> windows_core::HRESULT {
30990            unsafe {
30991                let this: &Identity =
30992                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30993                ICoreWebView2Profile6_Impl::SetIsPasswordAutosaveEnabled(
30994                    this,
30995                    core::mem::transmute_copy(&value),
30996                )
30997                .into()
30998            }
30999        }
31000        unsafe extern "system" fn IsGeneralAutofillEnabled<
31001            Identity: ICoreWebView2Profile6_Impl,
31002            const OFFSET: isize,
31003        >(
31004            this: *mut core::ffi::c_void,
31005            value: *mut windows_core::BOOL,
31006        ) -> windows_core::HRESULT {
31007            unsafe {
31008                let this: &Identity =
31009                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31010                ICoreWebView2Profile6_Impl::IsGeneralAutofillEnabled(
31011                    this,
31012                    core::mem::transmute_copy(&value),
31013                )
31014                .into()
31015            }
31016        }
31017        unsafe extern "system" fn SetIsGeneralAutofillEnabled<
31018            Identity: ICoreWebView2Profile6_Impl,
31019            const OFFSET: isize,
31020        >(
31021            this: *mut core::ffi::c_void,
31022            value: windows_core::BOOL,
31023        ) -> windows_core::HRESULT {
31024            unsafe {
31025                let this: &Identity =
31026                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31027                ICoreWebView2Profile6_Impl::SetIsGeneralAutofillEnabled(
31028                    this,
31029                    core::mem::transmute_copy(&value),
31030                )
31031                .into()
31032            }
31033        }
31034        Self {
31035            base__: ICoreWebView2Profile5_Vtbl::new::<Identity, OFFSET>(),
31036            IsPasswordAutosaveEnabled: IsPasswordAutosaveEnabled::<Identity, OFFSET>,
31037            SetIsPasswordAutosaveEnabled: SetIsPasswordAutosaveEnabled::<Identity, OFFSET>,
31038            IsGeneralAutofillEnabled: IsGeneralAutofillEnabled::<Identity, OFFSET>,
31039            SetIsGeneralAutofillEnabled: SetIsGeneralAutofillEnabled::<Identity, OFFSET>,
31040        }
31041    }
31042    pub fn matches(iid: &windows_core::GUID) -> bool {
31043        iid == &<ICoreWebView2Profile6 as windows_core::Interface>::IID
31044            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
31045            || iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
31046            || iid == &<ICoreWebView2Profile3 as windows_core::Interface>::IID
31047            || iid == &<ICoreWebView2Profile4 as windows_core::Interface>::IID
31048            || iid == &<ICoreWebView2Profile5 as windows_core::Interface>::IID
31049    }
31050}
31051impl windows_core::RuntimeName for ICoreWebView2Profile6 {}
31052windows_core::imp::define_interface!(
31053    ICoreWebView2Profile7,
31054    ICoreWebView2Profile7_Vtbl,
31055    0x7b4c7906_a1aa_4cb4_b723_db09f813d541
31056);
31057impl core::ops::Deref for ICoreWebView2Profile7 {
31058    type Target = ICoreWebView2Profile6;
31059    fn deref(&self) -> &Self::Target {
31060        unsafe { core::mem::transmute(self) }
31061    }
31062}
31063windows_core::imp::interface_hierarchy!(
31064    ICoreWebView2Profile7,
31065    windows_core::IUnknown,
31066    ICoreWebView2Profile,
31067    ICoreWebView2Profile2,
31068    ICoreWebView2Profile3,
31069    ICoreWebView2Profile4,
31070    ICoreWebView2Profile5,
31071    ICoreWebView2Profile6
31072);
31073impl ICoreWebView2Profile7 {
31074    pub unsafe fn AddBrowserExtension<P0, P1>(
31075        &self,
31076        extensionfolderpath: P0,
31077        handler: P1,
31078    ) -> windows_core::Result<()>
31079    where
31080        P0: windows_core::Param<windows_core::PCWSTR>,
31081        P1: windows_core::Param<ICoreWebView2ProfileAddBrowserExtensionCompletedHandler>,
31082    {
31083        unsafe {
31084            (windows_core::Interface::vtable(self).AddBrowserExtension)(
31085                windows_core::Interface::as_raw(self),
31086                extensionfolderpath.param().abi(),
31087                handler.param().abi(),
31088            )
31089            .ok()
31090        }
31091    }
31092    pub unsafe fn GetBrowserExtensions<P0>(&self, handler: P0) -> windows_core::Result<()>
31093    where
31094        P0: windows_core::Param<ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler>,
31095    {
31096        unsafe {
31097            (windows_core::Interface::vtable(self).GetBrowserExtensions)(
31098                windows_core::Interface::as_raw(self),
31099                handler.param().abi(),
31100            )
31101            .ok()
31102        }
31103    }
31104}
31105#[repr(C)]
31106#[doc(hidden)]
31107pub struct ICoreWebView2Profile7_Vtbl {
31108    pub base__: ICoreWebView2Profile6_Vtbl,
31109    pub AddBrowserExtension: unsafe extern "system" fn(
31110        *mut core::ffi::c_void,
31111        windows_core::PCWSTR,
31112        *mut core::ffi::c_void,
31113    ) -> windows_core::HRESULT,
31114    pub GetBrowserExtensions: unsafe extern "system" fn(
31115        *mut core::ffi::c_void,
31116        *mut core::ffi::c_void,
31117    ) -> windows_core::HRESULT,
31118}
31119pub trait ICoreWebView2Profile7_Impl: ICoreWebView2Profile6_Impl {
31120    fn AddBrowserExtension(
31121        &self,
31122        extensionfolderpath: &windows_core::PCWSTR,
31123        handler: windows_core::Ref<'_, ICoreWebView2ProfileAddBrowserExtensionCompletedHandler>,
31124    ) -> windows_core::Result<()>;
31125    fn GetBrowserExtensions(
31126        &self,
31127        handler: windows_core::Ref<'_, ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler>,
31128    ) -> windows_core::Result<()>;
31129}
31130impl ICoreWebView2Profile7_Vtbl {
31131    pub const fn new<Identity: ICoreWebView2Profile7_Impl, const OFFSET: isize>() -> Self {
31132        unsafe extern "system" fn AddBrowserExtension<
31133            Identity: ICoreWebView2Profile7_Impl,
31134            const OFFSET: isize,
31135        >(
31136            this: *mut core::ffi::c_void,
31137            extensionfolderpath: windows_core::PCWSTR,
31138            handler: *mut core::ffi::c_void,
31139        ) -> windows_core::HRESULT {
31140            unsafe {
31141                let this: &Identity =
31142                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31143                ICoreWebView2Profile7_Impl::AddBrowserExtension(
31144                    this,
31145                    core::mem::transmute(&extensionfolderpath),
31146                    core::mem::transmute_copy(&handler),
31147                )
31148                .into()
31149            }
31150        }
31151        unsafe extern "system" fn GetBrowserExtensions<
31152            Identity: ICoreWebView2Profile7_Impl,
31153            const OFFSET: isize,
31154        >(
31155            this: *mut core::ffi::c_void,
31156            handler: *mut core::ffi::c_void,
31157        ) -> windows_core::HRESULT {
31158            unsafe {
31159                let this: &Identity =
31160                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31161                ICoreWebView2Profile7_Impl::GetBrowserExtensions(
31162                    this,
31163                    core::mem::transmute_copy(&handler),
31164                )
31165                .into()
31166            }
31167        }
31168        Self {
31169            base__: ICoreWebView2Profile6_Vtbl::new::<Identity, OFFSET>(),
31170            AddBrowserExtension: AddBrowserExtension::<Identity, OFFSET>,
31171            GetBrowserExtensions: GetBrowserExtensions::<Identity, OFFSET>,
31172        }
31173    }
31174    pub fn matches(iid: &windows_core::GUID) -> bool {
31175        iid == &<ICoreWebView2Profile7 as windows_core::Interface>::IID
31176            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
31177            || iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
31178            || iid == &<ICoreWebView2Profile3 as windows_core::Interface>::IID
31179            || iid == &<ICoreWebView2Profile4 as windows_core::Interface>::IID
31180            || iid == &<ICoreWebView2Profile5 as windows_core::Interface>::IID
31181            || iid == &<ICoreWebView2Profile6 as windows_core::Interface>::IID
31182    }
31183}
31184impl windows_core::RuntimeName for ICoreWebView2Profile7 {}
31185windows_core::imp::define_interface!(
31186    ICoreWebView2Profile8,
31187    ICoreWebView2Profile8_Vtbl,
31188    0xfbf70c2f_eb1f_4383_85a0_163e92044011
31189);
31190impl core::ops::Deref for ICoreWebView2Profile8 {
31191    type Target = ICoreWebView2Profile7;
31192    fn deref(&self) -> &Self::Target {
31193        unsafe { core::mem::transmute(self) }
31194    }
31195}
31196windows_core::imp::interface_hierarchy!(
31197    ICoreWebView2Profile8,
31198    windows_core::IUnknown,
31199    ICoreWebView2Profile,
31200    ICoreWebView2Profile2,
31201    ICoreWebView2Profile3,
31202    ICoreWebView2Profile4,
31203    ICoreWebView2Profile5,
31204    ICoreWebView2Profile6,
31205    ICoreWebView2Profile7
31206);
31207impl ICoreWebView2Profile8 {
31208    pub unsafe fn Delete(&self) -> windows_core::Result<()> {
31209        unsafe {
31210            (windows_core::Interface::vtable(self).Delete)(windows_core::Interface::as_raw(self))
31211                .ok()
31212        }
31213    }
31214    pub unsafe fn add_Deleted<P0>(
31215        &self,
31216        eventhandler: P0,
31217        token: *mut i64,
31218    ) -> windows_core::Result<()>
31219    where
31220        P0: windows_core::Param<ICoreWebView2ProfileDeletedEventHandler>,
31221    {
31222        unsafe {
31223            (windows_core::Interface::vtable(self).add_Deleted)(
31224                windows_core::Interface::as_raw(self),
31225                eventhandler.param().abi(),
31226                token as _,
31227            )
31228            .ok()
31229        }
31230    }
31231    pub unsafe fn remove_Deleted(&self, token: i64) -> windows_core::Result<()> {
31232        unsafe {
31233            (windows_core::Interface::vtable(self).remove_Deleted)(
31234                windows_core::Interface::as_raw(self),
31235                token,
31236            )
31237            .ok()
31238        }
31239    }
31240}
31241#[repr(C)]
31242#[doc(hidden)]
31243pub struct ICoreWebView2Profile8_Vtbl {
31244    pub base__: ICoreWebView2Profile7_Vtbl,
31245    pub Delete: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31246    pub add_Deleted: unsafe extern "system" fn(
31247        *mut core::ffi::c_void,
31248        *mut core::ffi::c_void,
31249        *mut i64,
31250    ) -> windows_core::HRESULT,
31251    pub remove_Deleted:
31252        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
31253}
31254pub trait ICoreWebView2Profile8_Impl: ICoreWebView2Profile7_Impl {
31255    fn Delete(&self) -> windows_core::Result<()>;
31256    fn add_Deleted(
31257        &self,
31258        eventhandler: windows_core::Ref<'_, ICoreWebView2ProfileDeletedEventHandler>,
31259        token: *mut i64,
31260    ) -> windows_core::Result<()>;
31261    fn remove_Deleted(&self, token: i64) -> windows_core::Result<()>;
31262}
31263impl ICoreWebView2Profile8_Vtbl {
31264    pub const fn new<Identity: ICoreWebView2Profile8_Impl, const OFFSET: isize>() -> Self {
31265        unsafe extern "system" fn Delete<
31266            Identity: ICoreWebView2Profile8_Impl,
31267            const OFFSET: isize,
31268        >(
31269            this: *mut core::ffi::c_void,
31270        ) -> windows_core::HRESULT {
31271            unsafe {
31272                let this: &Identity =
31273                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31274                ICoreWebView2Profile8_Impl::Delete(this).into()
31275            }
31276        }
31277        unsafe extern "system" fn add_Deleted<
31278            Identity: ICoreWebView2Profile8_Impl,
31279            const OFFSET: isize,
31280        >(
31281            this: *mut core::ffi::c_void,
31282            eventhandler: *mut core::ffi::c_void,
31283            token: *mut i64,
31284        ) -> windows_core::HRESULT {
31285            unsafe {
31286                let this: &Identity =
31287                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31288                ICoreWebView2Profile8_Impl::add_Deleted(
31289                    this,
31290                    core::mem::transmute_copy(&eventhandler),
31291                    core::mem::transmute_copy(&token),
31292                )
31293                .into()
31294            }
31295        }
31296        unsafe extern "system" fn remove_Deleted<
31297            Identity: ICoreWebView2Profile8_Impl,
31298            const OFFSET: isize,
31299        >(
31300            this: *mut core::ffi::c_void,
31301            token: i64,
31302        ) -> windows_core::HRESULT {
31303            unsafe {
31304                let this: &Identity =
31305                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31306                ICoreWebView2Profile8_Impl::remove_Deleted(this, core::mem::transmute_copy(&token))
31307                    .into()
31308            }
31309        }
31310        Self {
31311            base__: ICoreWebView2Profile7_Vtbl::new::<Identity, OFFSET>(),
31312            Delete: Delete::<Identity, OFFSET>,
31313            add_Deleted: add_Deleted::<Identity, OFFSET>,
31314            remove_Deleted: remove_Deleted::<Identity, OFFSET>,
31315        }
31316    }
31317    pub fn matches(iid: &windows_core::GUID) -> bool {
31318        iid == &<ICoreWebView2Profile8 as windows_core::Interface>::IID
31319            || iid == &<ICoreWebView2Profile as windows_core::Interface>::IID
31320            || iid == &<ICoreWebView2Profile2 as windows_core::Interface>::IID
31321            || iid == &<ICoreWebView2Profile3 as windows_core::Interface>::IID
31322            || iid == &<ICoreWebView2Profile4 as windows_core::Interface>::IID
31323            || iid == &<ICoreWebView2Profile5 as windows_core::Interface>::IID
31324            || iid == &<ICoreWebView2Profile6 as windows_core::Interface>::IID
31325            || iid == &<ICoreWebView2Profile7 as windows_core::Interface>::IID
31326    }
31327}
31328impl windows_core::RuntimeName for ICoreWebView2Profile8 {}
31329windows_core::imp::define_interface!(
31330    ICoreWebView2ProfileAddBrowserExtensionCompletedHandler,
31331    ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Vtbl,
31332    0xdf1aab27_82b9_4ab6_aae8_017a49398c14
31333);
31334windows_core::imp::interface_hierarchy!(
31335    ICoreWebView2ProfileAddBrowserExtensionCompletedHandler,
31336    windows_core::IUnknown
31337);
31338impl ICoreWebView2ProfileAddBrowserExtensionCompletedHandler {
31339    pub unsafe fn Invoke<P1>(
31340        &self,
31341        errorcode: windows_core::HRESULT,
31342        result: P1,
31343    ) -> windows_core::Result<()>
31344    where
31345        P1: windows_core::Param<ICoreWebView2BrowserExtension>,
31346    {
31347        unsafe {
31348            (windows_core::Interface::vtable(self).Invoke)(
31349                windows_core::Interface::as_raw(self),
31350                errorcode,
31351                result.param().abi(),
31352            )
31353            .ok()
31354        }
31355    }
31356}
31357#[repr(C)]
31358#[doc(hidden)]
31359pub struct ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Vtbl {
31360    pub base__: windows_core::IUnknown_Vtbl,
31361    pub Invoke: unsafe extern "system" fn(
31362        *mut core::ffi::c_void,
31363        windows_core::HRESULT,
31364        *mut core::ffi::c_void,
31365    ) -> windows_core::HRESULT,
31366}
31367pub trait ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Impl:
31368    windows_core::IUnknownImpl
31369{
31370    fn Invoke(
31371        &self,
31372        errorcode: windows_core::HRESULT,
31373        result: windows_core::Ref<'_, ICoreWebView2BrowserExtension>,
31374    ) -> windows_core::Result<()>;
31375}
31376impl ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Vtbl {
31377    pub const fn new<
31378        Identity: ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Impl,
31379        const OFFSET: isize,
31380    >() -> Self {
31381        unsafe extern "system" fn Invoke<
31382            Identity: ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Impl,
31383            const OFFSET: isize,
31384        >(
31385            this: *mut core::ffi::c_void,
31386            errorcode: windows_core::HRESULT,
31387            result: *mut core::ffi::c_void,
31388        ) -> windows_core::HRESULT {
31389            unsafe {
31390                let this: &Identity =
31391                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31392                ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Impl::Invoke(
31393                    this,
31394                    core::mem::transmute_copy(&errorcode),
31395                    core::mem::transmute_copy(&result),
31396                )
31397                .into()
31398            }
31399        }
31400        Self {
31401            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31402            Invoke: Invoke::<Identity, OFFSET>,
31403        }
31404    }
31405    pub fn matches(iid: &windows_core::GUID) -> bool {
31406        iid == & < ICoreWebView2ProfileAddBrowserExtensionCompletedHandler as windows_core::Interface >::IID
31407    }
31408}
31409impl windows_core::RuntimeName for ICoreWebView2ProfileAddBrowserExtensionCompletedHandler {}
31410windows_core::imp::define_interface!(
31411    ICoreWebView2ProfileDeletedEventHandler,
31412    ICoreWebView2ProfileDeletedEventHandler_Vtbl,
31413    0xdf35055d_772e_4dbe_b743_5fbf74a2b258
31414);
31415windows_core::imp::interface_hierarchy!(
31416    ICoreWebView2ProfileDeletedEventHandler,
31417    windows_core::IUnknown
31418);
31419impl ICoreWebView2ProfileDeletedEventHandler {
31420    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
31421    where
31422        P0: windows_core::Param<ICoreWebView2Profile>,
31423        P1: windows_core::Param<windows_core::IUnknown>,
31424    {
31425        unsafe {
31426            (windows_core::Interface::vtable(self).Invoke)(
31427                windows_core::Interface::as_raw(self),
31428                sender.param().abi(),
31429                args.param().abi(),
31430            )
31431            .ok()
31432        }
31433    }
31434}
31435#[repr(C)]
31436#[doc(hidden)]
31437pub struct ICoreWebView2ProfileDeletedEventHandler_Vtbl {
31438    pub base__: windows_core::IUnknown_Vtbl,
31439    pub Invoke: unsafe extern "system" fn(
31440        *mut core::ffi::c_void,
31441        *mut core::ffi::c_void,
31442        *mut core::ffi::c_void,
31443    ) -> windows_core::HRESULT,
31444}
31445pub trait ICoreWebView2ProfileDeletedEventHandler_Impl: windows_core::IUnknownImpl {
31446    fn Invoke(
31447        &self,
31448        sender: windows_core::Ref<'_, ICoreWebView2Profile>,
31449        args: windows_core::Ref<'_, windows_core::IUnknown>,
31450    ) -> windows_core::Result<()>;
31451}
31452impl ICoreWebView2ProfileDeletedEventHandler_Vtbl {
31453    pub const fn new<
31454        Identity: ICoreWebView2ProfileDeletedEventHandler_Impl,
31455        const OFFSET: isize,
31456    >() -> Self {
31457        unsafe extern "system" fn Invoke<
31458            Identity: ICoreWebView2ProfileDeletedEventHandler_Impl,
31459            const OFFSET: isize,
31460        >(
31461            this: *mut core::ffi::c_void,
31462            sender: *mut core::ffi::c_void,
31463            args: *mut core::ffi::c_void,
31464        ) -> windows_core::HRESULT {
31465            unsafe {
31466                let this: &Identity =
31467                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31468                ICoreWebView2ProfileDeletedEventHandler_Impl::Invoke(
31469                    this,
31470                    core::mem::transmute_copy(&sender),
31471                    core::mem::transmute_copy(&args),
31472                )
31473                .into()
31474            }
31475        }
31476        Self {
31477            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31478            Invoke: Invoke::<Identity, OFFSET>,
31479        }
31480    }
31481    pub fn matches(iid: &windows_core::GUID) -> bool {
31482        iid == &<ICoreWebView2ProfileDeletedEventHandler as windows_core::Interface>::IID
31483    }
31484}
31485impl windows_core::RuntimeName for ICoreWebView2ProfileDeletedEventHandler {}
31486windows_core::imp::define_interface!(
31487    ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler,
31488    ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Vtbl,
31489    0xfce16a1c_f107_4601_8b75_fc4940ae25d0
31490);
31491windows_core::imp::interface_hierarchy!(
31492    ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler,
31493    windows_core::IUnknown
31494);
31495impl ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler {
31496    pub unsafe fn Invoke<P1>(
31497        &self,
31498        errorcode: windows_core::HRESULT,
31499        result: P1,
31500    ) -> windows_core::Result<()>
31501    where
31502        P1: windows_core::Param<ICoreWebView2BrowserExtensionList>,
31503    {
31504        unsafe {
31505            (windows_core::Interface::vtable(self).Invoke)(
31506                windows_core::Interface::as_raw(self),
31507                errorcode,
31508                result.param().abi(),
31509            )
31510            .ok()
31511        }
31512    }
31513}
31514#[repr(C)]
31515#[doc(hidden)]
31516pub struct ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Vtbl {
31517    pub base__: windows_core::IUnknown_Vtbl,
31518    pub Invoke: unsafe extern "system" fn(
31519        *mut core::ffi::c_void,
31520        windows_core::HRESULT,
31521        *mut core::ffi::c_void,
31522    ) -> windows_core::HRESULT,
31523}
31524pub trait ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Impl:
31525    windows_core::IUnknownImpl
31526{
31527    fn Invoke(
31528        &self,
31529        errorcode: windows_core::HRESULT,
31530        result: windows_core::Ref<'_, ICoreWebView2BrowserExtensionList>,
31531    ) -> windows_core::Result<()>;
31532}
31533impl ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Vtbl {
31534    pub const fn new<
31535        Identity: ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Impl,
31536        const OFFSET: isize,
31537    >() -> Self {
31538        unsafe extern "system" fn Invoke<
31539            Identity: ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Impl,
31540            const OFFSET: isize,
31541        >(
31542            this: *mut core::ffi::c_void,
31543            errorcode: windows_core::HRESULT,
31544            result: *mut core::ffi::c_void,
31545        ) -> windows_core::HRESULT {
31546            unsafe {
31547                let this: &Identity =
31548                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31549                ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Impl::Invoke(
31550                    this,
31551                    core::mem::transmute_copy(&errorcode),
31552                    core::mem::transmute_copy(&result),
31553                )
31554                .into()
31555            }
31556        }
31557        Self {
31558            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31559            Invoke: Invoke::<Identity, OFFSET>,
31560        }
31561    }
31562    pub fn matches(iid: &windows_core::GUID) -> bool {
31563        iid == & < ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler as windows_core::Interface >::IID
31564    }
31565}
31566impl windows_core::RuntimeName for ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler {}
31567windows_core::imp::define_interface!(
31568    ICoreWebView2RasterizationScaleChangedEventHandler,
31569    ICoreWebView2RasterizationScaleChangedEventHandler_Vtbl,
31570    0x9c98c8b1_ac53_427e_a345_3049b5524bbe
31571);
31572windows_core::imp::interface_hierarchy!(
31573    ICoreWebView2RasterizationScaleChangedEventHandler,
31574    windows_core::IUnknown
31575);
31576impl ICoreWebView2RasterizationScaleChangedEventHandler {
31577    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
31578    where
31579        P0: windows_core::Param<ICoreWebView2Controller>,
31580        P1: windows_core::Param<windows_core::IUnknown>,
31581    {
31582        unsafe {
31583            (windows_core::Interface::vtable(self).Invoke)(
31584                windows_core::Interface::as_raw(self),
31585                sender.param().abi(),
31586                args.param().abi(),
31587            )
31588            .ok()
31589        }
31590    }
31591}
31592#[repr(C)]
31593#[doc(hidden)]
31594pub struct ICoreWebView2RasterizationScaleChangedEventHandler_Vtbl {
31595    pub base__: windows_core::IUnknown_Vtbl,
31596    pub Invoke: unsafe extern "system" fn(
31597        *mut core::ffi::c_void,
31598        *mut core::ffi::c_void,
31599        *mut core::ffi::c_void,
31600    ) -> windows_core::HRESULT,
31601}
31602pub trait ICoreWebView2RasterizationScaleChangedEventHandler_Impl:
31603    windows_core::IUnknownImpl
31604{
31605    fn Invoke(
31606        &self,
31607        sender: windows_core::Ref<'_, ICoreWebView2Controller>,
31608        args: windows_core::Ref<'_, windows_core::IUnknown>,
31609    ) -> windows_core::Result<()>;
31610}
31611impl ICoreWebView2RasterizationScaleChangedEventHandler_Vtbl {
31612    pub const fn new<
31613        Identity: ICoreWebView2RasterizationScaleChangedEventHandler_Impl,
31614        const OFFSET: isize,
31615    >() -> Self {
31616        unsafe extern "system" fn Invoke<
31617            Identity: ICoreWebView2RasterizationScaleChangedEventHandler_Impl,
31618            const OFFSET: isize,
31619        >(
31620            this: *mut core::ffi::c_void,
31621            sender: *mut core::ffi::c_void,
31622            args: *mut core::ffi::c_void,
31623        ) -> windows_core::HRESULT {
31624            unsafe {
31625                let this: &Identity =
31626                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31627                ICoreWebView2RasterizationScaleChangedEventHandler_Impl::Invoke(
31628                    this,
31629                    core::mem::transmute_copy(&sender),
31630                    core::mem::transmute_copy(&args),
31631                )
31632                .into()
31633            }
31634        }
31635        Self {
31636            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31637            Invoke: Invoke::<Identity, OFFSET>,
31638        }
31639    }
31640    pub fn matches(iid: &windows_core::GUID) -> bool {
31641        iid == &<ICoreWebView2RasterizationScaleChangedEventHandler as windows_core::Interface>::IID
31642    }
31643}
31644impl windows_core::RuntimeName for ICoreWebView2RasterizationScaleChangedEventHandler {}
31645windows_core::imp::define_interface!(
31646    ICoreWebView2RegionRectCollectionView,
31647    ICoreWebView2RegionRectCollectionView_Vtbl,
31648    0x333353b8_48bf_4449_8fcc_22697faf5753
31649);
31650windows_core::imp::interface_hierarchy!(
31651    ICoreWebView2RegionRectCollectionView,
31652    windows_core::IUnknown
31653);
31654impl ICoreWebView2RegionRectCollectionView {
31655    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
31656        unsafe {
31657            (windows_core::Interface::vtable(self).Count)(
31658                windows_core::Interface::as_raw(self),
31659                value as _,
31660            )
31661            .ok()
31662        }
31663    }
31664    pub unsafe fn GetValueAtIndex(
31665        &self,
31666        index: u32,
31667        value: *mut windows::Win32::Foundation::RECT,
31668    ) -> windows_core::Result<()> {
31669        unsafe {
31670            (windows_core::Interface::vtable(self).GetValueAtIndex)(
31671                windows_core::Interface::as_raw(self),
31672                index,
31673                value as _,
31674            )
31675            .ok()
31676        }
31677    }
31678}
31679#[repr(C)]
31680#[doc(hidden)]
31681pub struct ICoreWebView2RegionRectCollectionView_Vtbl {
31682    pub base__: windows_core::IUnknown_Vtbl,
31683    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
31684    pub GetValueAtIndex: unsafe extern "system" fn(
31685        *mut core::ffi::c_void,
31686        u32,
31687        *mut windows::Win32::Foundation::RECT,
31688    ) -> windows_core::HRESULT,
31689}
31690pub trait ICoreWebView2RegionRectCollectionView_Impl: windows_core::IUnknownImpl {
31691    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
31692    fn GetValueAtIndex(
31693        &self,
31694        index: u32,
31695        value: *mut windows::Win32::Foundation::RECT,
31696    ) -> windows_core::Result<()>;
31697}
31698impl ICoreWebView2RegionRectCollectionView_Vtbl {
31699    pub const fn new<Identity: ICoreWebView2RegionRectCollectionView_Impl, const OFFSET: isize>(
31700    ) -> Self {
31701        unsafe extern "system" fn Count<
31702            Identity: ICoreWebView2RegionRectCollectionView_Impl,
31703            const OFFSET: isize,
31704        >(
31705            this: *mut core::ffi::c_void,
31706            value: *mut u32,
31707        ) -> windows_core::HRESULT {
31708            unsafe {
31709                let this: &Identity =
31710                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31711                ICoreWebView2RegionRectCollectionView_Impl::Count(
31712                    this,
31713                    core::mem::transmute_copy(&value),
31714                )
31715                .into()
31716            }
31717        }
31718        unsafe extern "system" fn GetValueAtIndex<
31719            Identity: ICoreWebView2RegionRectCollectionView_Impl,
31720            const OFFSET: isize,
31721        >(
31722            this: *mut core::ffi::c_void,
31723            index: u32,
31724            value: *mut windows::Win32::Foundation::RECT,
31725        ) -> windows_core::HRESULT {
31726            unsafe {
31727                let this: &Identity =
31728                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31729                ICoreWebView2RegionRectCollectionView_Impl::GetValueAtIndex(
31730                    this,
31731                    core::mem::transmute_copy(&index),
31732                    core::mem::transmute_copy(&value),
31733                )
31734                .into()
31735            }
31736        }
31737        Self {
31738            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31739            Count: Count::<Identity, OFFSET>,
31740            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
31741        }
31742    }
31743    pub fn matches(iid: &windows_core::GUID) -> bool {
31744        iid == &<ICoreWebView2RegionRectCollectionView as windows_core::Interface>::IID
31745    }
31746}
31747impl windows_core::RuntimeName for ICoreWebView2RegionRectCollectionView {}
31748windows_core::imp::define_interface!(
31749    ICoreWebView2SaveAsUIShowingEventArgs,
31750    ICoreWebView2SaveAsUIShowingEventArgs_Vtbl,
31751    0x55902952_0e0d_5aaa_a7d0_e833cdb34f62
31752);
31753windows_core::imp::interface_hierarchy!(
31754    ICoreWebView2SaveAsUIShowingEventArgs,
31755    windows_core::IUnknown
31756);
31757impl ICoreWebView2SaveAsUIShowingEventArgs {
31758    pub unsafe fn ContentMimeType(
31759        &self,
31760        value: *mut windows_core::PWSTR,
31761    ) -> windows_core::Result<()> {
31762        unsafe {
31763            (windows_core::Interface::vtable(self).ContentMimeType)(
31764                windows_core::Interface::as_raw(self),
31765                value as _,
31766            )
31767            .ok()
31768        }
31769    }
31770    pub unsafe fn SetCancel(&self, value: bool) -> windows_core::Result<()> {
31771        unsafe {
31772            (windows_core::Interface::vtable(self).SetCancel)(
31773                windows_core::Interface::as_raw(self),
31774                value.into(),
31775            )
31776            .ok()
31777        }
31778    }
31779    pub unsafe fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
31780        unsafe {
31781            (windows_core::Interface::vtable(self).Cancel)(
31782                windows_core::Interface::as_raw(self),
31783                value as _,
31784            )
31785            .ok()
31786        }
31787    }
31788    pub unsafe fn SetSuppressDefaultDialog(&self, value: bool) -> windows_core::Result<()> {
31789        unsafe {
31790            (windows_core::Interface::vtable(self).SetSuppressDefaultDialog)(
31791                windows_core::Interface::as_raw(self),
31792                value.into(),
31793            )
31794            .ok()
31795        }
31796    }
31797    pub unsafe fn SuppressDefaultDialog(
31798        &self,
31799        value: *mut windows_core::BOOL,
31800    ) -> windows_core::Result<()> {
31801        unsafe {
31802            (windows_core::Interface::vtable(self).SuppressDefaultDialog)(
31803                windows_core::Interface::as_raw(self),
31804                value as _,
31805            )
31806            .ok()
31807        }
31808    }
31809    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
31810        unsafe {
31811            let mut result__ = core::mem::zeroed();
31812            (windows_core::Interface::vtable(self).GetDeferral)(
31813                windows_core::Interface::as_raw(self),
31814                &mut result__,
31815            )
31816            .and_then(|| windows_core::Type::from_abi(result__))
31817        }
31818    }
31819    pub unsafe fn SetSaveAsFilePath<P0>(&self, value: P0) -> windows_core::Result<()>
31820    where
31821        P0: windows_core::Param<windows_core::PCWSTR>,
31822    {
31823        unsafe {
31824            (windows_core::Interface::vtable(self).SetSaveAsFilePath)(
31825                windows_core::Interface::as_raw(self),
31826                value.param().abi(),
31827            )
31828            .ok()
31829        }
31830    }
31831    pub unsafe fn SaveAsFilePath(
31832        &self,
31833        value: *mut windows_core::PWSTR,
31834    ) -> windows_core::Result<()> {
31835        unsafe {
31836            (windows_core::Interface::vtable(self).SaveAsFilePath)(
31837                windows_core::Interface::as_raw(self),
31838                value as _,
31839            )
31840            .ok()
31841        }
31842    }
31843    pub unsafe fn SetAllowReplace(&self, value: bool) -> windows_core::Result<()> {
31844        unsafe {
31845            (windows_core::Interface::vtable(self).SetAllowReplace)(
31846                windows_core::Interface::as_raw(self),
31847                value.into(),
31848            )
31849            .ok()
31850        }
31851    }
31852    pub unsafe fn AllowReplace(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
31853        unsafe {
31854            (windows_core::Interface::vtable(self).AllowReplace)(
31855                windows_core::Interface::as_raw(self),
31856                value as _,
31857            )
31858            .ok()
31859        }
31860    }
31861    pub unsafe fn SetKind(&self, value: COREWEBVIEW2_SAVE_AS_KIND) -> windows_core::Result<()> {
31862        unsafe {
31863            (windows_core::Interface::vtable(self).SetKind)(
31864                windows_core::Interface::as_raw(self),
31865                value,
31866            )
31867            .ok()
31868        }
31869    }
31870    pub unsafe fn Kind(&self, value: *mut COREWEBVIEW2_SAVE_AS_KIND) -> windows_core::Result<()> {
31871        unsafe {
31872            (windows_core::Interface::vtable(self).Kind)(
31873                windows_core::Interface::as_raw(self),
31874                value as _,
31875            )
31876            .ok()
31877        }
31878    }
31879}
31880#[repr(C)]
31881#[doc(hidden)]
31882pub struct ICoreWebView2SaveAsUIShowingEventArgs_Vtbl {
31883    pub base__: windows_core::IUnknown_Vtbl,
31884    pub ContentMimeType: unsafe extern "system" fn(
31885        *mut core::ffi::c_void,
31886        *mut windows_core::PWSTR,
31887    ) -> windows_core::HRESULT,
31888    pub SetCancel: unsafe extern "system" fn(
31889        *mut core::ffi::c_void,
31890        windows_core::BOOL,
31891    ) -> windows_core::HRESULT,
31892    pub Cancel: unsafe extern "system" fn(
31893        *mut core::ffi::c_void,
31894        *mut windows_core::BOOL,
31895    ) -> windows_core::HRESULT,
31896    pub SetSuppressDefaultDialog: unsafe extern "system" fn(
31897        *mut core::ffi::c_void,
31898        windows_core::BOOL,
31899    ) -> windows_core::HRESULT,
31900    pub SuppressDefaultDialog: unsafe extern "system" fn(
31901        *mut core::ffi::c_void,
31902        *mut windows_core::BOOL,
31903    ) -> windows_core::HRESULT,
31904    pub GetDeferral: unsafe extern "system" fn(
31905        *mut core::ffi::c_void,
31906        *mut *mut core::ffi::c_void,
31907    ) -> windows_core::HRESULT,
31908    pub SetSaveAsFilePath: unsafe extern "system" fn(
31909        *mut core::ffi::c_void,
31910        windows_core::PCWSTR,
31911    ) -> windows_core::HRESULT,
31912    pub SaveAsFilePath: unsafe extern "system" fn(
31913        *mut core::ffi::c_void,
31914        *mut windows_core::PWSTR,
31915    ) -> windows_core::HRESULT,
31916    pub SetAllowReplace: unsafe extern "system" fn(
31917        *mut core::ffi::c_void,
31918        windows_core::BOOL,
31919    ) -> windows_core::HRESULT,
31920    pub AllowReplace: unsafe extern "system" fn(
31921        *mut core::ffi::c_void,
31922        *mut windows_core::BOOL,
31923    ) -> windows_core::HRESULT,
31924    pub SetKind: unsafe extern "system" fn(
31925        *mut core::ffi::c_void,
31926        COREWEBVIEW2_SAVE_AS_KIND,
31927    ) -> windows_core::HRESULT,
31928    pub Kind: unsafe extern "system" fn(
31929        *mut core::ffi::c_void,
31930        *mut COREWEBVIEW2_SAVE_AS_KIND,
31931    ) -> windows_core::HRESULT,
31932}
31933pub trait ICoreWebView2SaveAsUIShowingEventArgs_Impl: windows_core::IUnknownImpl {
31934    fn ContentMimeType(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
31935    fn SetCancel(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
31936    fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
31937    fn SetSuppressDefaultDialog(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
31938    fn SuppressDefaultDialog(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
31939    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
31940    fn SetSaveAsFilePath(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
31941    fn SaveAsFilePath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
31942    fn SetAllowReplace(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
31943    fn AllowReplace(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
31944    fn SetKind(&self, value: COREWEBVIEW2_SAVE_AS_KIND) -> windows_core::Result<()>;
31945    fn Kind(&self, value: *mut COREWEBVIEW2_SAVE_AS_KIND) -> windows_core::Result<()>;
31946}
31947impl ICoreWebView2SaveAsUIShowingEventArgs_Vtbl {
31948    pub const fn new<Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl, const OFFSET: isize>(
31949    ) -> Self {
31950        unsafe extern "system" fn ContentMimeType<
31951            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
31952            const OFFSET: isize,
31953        >(
31954            this: *mut core::ffi::c_void,
31955            value: *mut windows_core::PWSTR,
31956        ) -> windows_core::HRESULT {
31957            unsafe {
31958                let this: &Identity =
31959                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31960                ICoreWebView2SaveAsUIShowingEventArgs_Impl::ContentMimeType(
31961                    this,
31962                    core::mem::transmute_copy(&value),
31963                )
31964                .into()
31965            }
31966        }
31967        unsafe extern "system" fn SetCancel<
31968            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
31969            const OFFSET: isize,
31970        >(
31971            this: *mut core::ffi::c_void,
31972            value: windows_core::BOOL,
31973        ) -> windows_core::HRESULT {
31974            unsafe {
31975                let this: &Identity =
31976                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31977                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SetCancel(
31978                    this,
31979                    core::mem::transmute_copy(&value),
31980                )
31981                .into()
31982            }
31983        }
31984        unsafe extern "system" fn Cancel<
31985            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
31986            const OFFSET: isize,
31987        >(
31988            this: *mut core::ffi::c_void,
31989            value: *mut windows_core::BOOL,
31990        ) -> windows_core::HRESULT {
31991            unsafe {
31992                let this: &Identity =
31993                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31994                ICoreWebView2SaveAsUIShowingEventArgs_Impl::Cancel(
31995                    this,
31996                    core::mem::transmute_copy(&value),
31997                )
31998                .into()
31999            }
32000        }
32001        unsafe extern "system" fn SetSuppressDefaultDialog<
32002            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32003            const OFFSET: isize,
32004        >(
32005            this: *mut core::ffi::c_void,
32006            value: windows_core::BOOL,
32007        ) -> windows_core::HRESULT {
32008            unsafe {
32009                let this: &Identity =
32010                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32011                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SetSuppressDefaultDialog(
32012                    this,
32013                    core::mem::transmute_copy(&value),
32014                )
32015                .into()
32016            }
32017        }
32018        unsafe extern "system" fn SuppressDefaultDialog<
32019            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32020            const OFFSET: isize,
32021        >(
32022            this: *mut core::ffi::c_void,
32023            value: *mut windows_core::BOOL,
32024        ) -> windows_core::HRESULT {
32025            unsafe {
32026                let this: &Identity =
32027                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32028                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SuppressDefaultDialog(
32029                    this,
32030                    core::mem::transmute_copy(&value),
32031                )
32032                .into()
32033            }
32034        }
32035        unsafe extern "system" fn GetDeferral<
32036            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32037            const OFFSET: isize,
32038        >(
32039            this: *mut core::ffi::c_void,
32040            value: *mut *mut core::ffi::c_void,
32041        ) -> windows_core::HRESULT {
32042            unsafe {
32043                let this: &Identity =
32044                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32045                match ICoreWebView2SaveAsUIShowingEventArgs_Impl::GetDeferral(this) {
32046                    Ok(ok__) => {
32047                        value.write(core::mem::transmute(ok__));
32048                        windows_core::HRESULT(0)
32049                    }
32050                    Err(err) => err.into(),
32051                }
32052            }
32053        }
32054        unsafe extern "system" fn SetSaveAsFilePath<
32055            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32056            const OFFSET: isize,
32057        >(
32058            this: *mut core::ffi::c_void,
32059            value: windows_core::PCWSTR,
32060        ) -> windows_core::HRESULT {
32061            unsafe {
32062                let this: &Identity =
32063                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32064                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SetSaveAsFilePath(
32065                    this,
32066                    core::mem::transmute(&value),
32067                )
32068                .into()
32069            }
32070        }
32071        unsafe extern "system" fn SaveAsFilePath<
32072            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32073            const OFFSET: isize,
32074        >(
32075            this: *mut core::ffi::c_void,
32076            value: *mut windows_core::PWSTR,
32077        ) -> windows_core::HRESULT {
32078            unsafe {
32079                let this: &Identity =
32080                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32081                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SaveAsFilePath(
32082                    this,
32083                    core::mem::transmute_copy(&value),
32084                )
32085                .into()
32086            }
32087        }
32088        unsafe extern "system" fn SetAllowReplace<
32089            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32090            const OFFSET: isize,
32091        >(
32092            this: *mut core::ffi::c_void,
32093            value: windows_core::BOOL,
32094        ) -> windows_core::HRESULT {
32095            unsafe {
32096                let this: &Identity =
32097                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32098                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SetAllowReplace(
32099                    this,
32100                    core::mem::transmute_copy(&value),
32101                )
32102                .into()
32103            }
32104        }
32105        unsafe extern "system" fn AllowReplace<
32106            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32107            const OFFSET: isize,
32108        >(
32109            this: *mut core::ffi::c_void,
32110            value: *mut windows_core::BOOL,
32111        ) -> windows_core::HRESULT {
32112            unsafe {
32113                let this: &Identity =
32114                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32115                ICoreWebView2SaveAsUIShowingEventArgs_Impl::AllowReplace(
32116                    this,
32117                    core::mem::transmute_copy(&value),
32118                )
32119                .into()
32120            }
32121        }
32122        unsafe extern "system" fn SetKind<
32123            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32124            const OFFSET: isize,
32125        >(
32126            this: *mut core::ffi::c_void,
32127            value: COREWEBVIEW2_SAVE_AS_KIND,
32128        ) -> windows_core::HRESULT {
32129            unsafe {
32130                let this: &Identity =
32131                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32132                ICoreWebView2SaveAsUIShowingEventArgs_Impl::SetKind(
32133                    this,
32134                    core::mem::transmute_copy(&value),
32135                )
32136                .into()
32137            }
32138        }
32139        unsafe extern "system" fn Kind<
32140            Identity: ICoreWebView2SaveAsUIShowingEventArgs_Impl,
32141            const OFFSET: isize,
32142        >(
32143            this: *mut core::ffi::c_void,
32144            value: *mut COREWEBVIEW2_SAVE_AS_KIND,
32145        ) -> windows_core::HRESULT {
32146            unsafe {
32147                let this: &Identity =
32148                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32149                ICoreWebView2SaveAsUIShowingEventArgs_Impl::Kind(
32150                    this,
32151                    core::mem::transmute_copy(&value),
32152                )
32153                .into()
32154            }
32155        }
32156        Self {
32157            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32158            ContentMimeType: ContentMimeType::<Identity, OFFSET>,
32159            SetCancel: SetCancel::<Identity, OFFSET>,
32160            Cancel: Cancel::<Identity, OFFSET>,
32161            SetSuppressDefaultDialog: SetSuppressDefaultDialog::<Identity, OFFSET>,
32162            SuppressDefaultDialog: SuppressDefaultDialog::<Identity, OFFSET>,
32163            GetDeferral: GetDeferral::<Identity, OFFSET>,
32164            SetSaveAsFilePath: SetSaveAsFilePath::<Identity, OFFSET>,
32165            SaveAsFilePath: SaveAsFilePath::<Identity, OFFSET>,
32166            SetAllowReplace: SetAllowReplace::<Identity, OFFSET>,
32167            AllowReplace: AllowReplace::<Identity, OFFSET>,
32168            SetKind: SetKind::<Identity, OFFSET>,
32169            Kind: Kind::<Identity, OFFSET>,
32170        }
32171    }
32172    pub fn matches(iid: &windows_core::GUID) -> bool {
32173        iid == &<ICoreWebView2SaveAsUIShowingEventArgs as windows_core::Interface>::IID
32174    }
32175}
32176impl windows_core::RuntimeName for ICoreWebView2SaveAsUIShowingEventArgs {}
32177windows_core::imp::define_interface!(
32178    ICoreWebView2SaveAsUIShowingEventHandler,
32179    ICoreWebView2SaveAsUIShowingEventHandler_Vtbl,
32180    0x6baa177e_3a2e_5ccf_9a13_fad676cd0522
32181);
32182windows_core::imp::interface_hierarchy!(
32183    ICoreWebView2SaveAsUIShowingEventHandler,
32184    windows_core::IUnknown
32185);
32186impl ICoreWebView2SaveAsUIShowingEventHandler {
32187    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
32188    where
32189        P0: windows_core::Param<ICoreWebView2>,
32190        P1: windows_core::Param<ICoreWebView2SaveAsUIShowingEventArgs>,
32191    {
32192        unsafe {
32193            (windows_core::Interface::vtable(self).Invoke)(
32194                windows_core::Interface::as_raw(self),
32195                sender.param().abi(),
32196                args.param().abi(),
32197            )
32198            .ok()
32199        }
32200    }
32201}
32202#[repr(C)]
32203#[doc(hidden)]
32204pub struct ICoreWebView2SaveAsUIShowingEventHandler_Vtbl {
32205    pub base__: windows_core::IUnknown_Vtbl,
32206    pub Invoke: unsafe extern "system" fn(
32207        *mut core::ffi::c_void,
32208        *mut core::ffi::c_void,
32209        *mut core::ffi::c_void,
32210    ) -> windows_core::HRESULT,
32211}
32212pub trait ICoreWebView2SaveAsUIShowingEventHandler_Impl: windows_core::IUnknownImpl {
32213    fn Invoke(
32214        &self,
32215        sender: windows_core::Ref<'_, ICoreWebView2>,
32216        args: windows_core::Ref<'_, ICoreWebView2SaveAsUIShowingEventArgs>,
32217    ) -> windows_core::Result<()>;
32218}
32219impl ICoreWebView2SaveAsUIShowingEventHandler_Vtbl {
32220    pub const fn new<
32221        Identity: ICoreWebView2SaveAsUIShowingEventHandler_Impl,
32222        const OFFSET: isize,
32223    >() -> Self {
32224        unsafe extern "system" fn Invoke<
32225            Identity: ICoreWebView2SaveAsUIShowingEventHandler_Impl,
32226            const OFFSET: isize,
32227        >(
32228            this: *mut core::ffi::c_void,
32229            sender: *mut core::ffi::c_void,
32230            args: *mut core::ffi::c_void,
32231        ) -> windows_core::HRESULT {
32232            unsafe {
32233                let this: &Identity =
32234                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32235                ICoreWebView2SaveAsUIShowingEventHandler_Impl::Invoke(
32236                    this,
32237                    core::mem::transmute_copy(&sender),
32238                    core::mem::transmute_copy(&args),
32239                )
32240                .into()
32241            }
32242        }
32243        Self {
32244            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32245            Invoke: Invoke::<Identity, OFFSET>,
32246        }
32247    }
32248    pub fn matches(iid: &windows_core::GUID) -> bool {
32249        iid == &<ICoreWebView2SaveAsUIShowingEventHandler as windows_core::Interface>::IID
32250    }
32251}
32252impl windows_core::RuntimeName for ICoreWebView2SaveAsUIShowingEventHandler {}
32253windows_core::imp::define_interface!(
32254    ICoreWebView2SaveFileSecurityCheckStartingEventArgs,
32255    ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Vtbl,
32256    0xcf4ff1d1_5a67_5660_8d63_ef699881ea65
32257);
32258windows_core::imp::interface_hierarchy!(
32259    ICoreWebView2SaveFileSecurityCheckStartingEventArgs,
32260    windows_core::IUnknown
32261);
32262impl ICoreWebView2SaveFileSecurityCheckStartingEventArgs {
32263    pub unsafe fn CancelSave(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
32264        unsafe {
32265            (windows_core::Interface::vtable(self).CancelSave)(
32266                windows_core::Interface::as_raw(self),
32267                value as _,
32268            )
32269            .ok()
32270        }
32271    }
32272    pub unsafe fn SetCancelSave(&self, value: bool) -> windows_core::Result<()> {
32273        unsafe {
32274            (windows_core::Interface::vtable(self).SetCancelSave)(
32275                windows_core::Interface::as_raw(self),
32276                value.into(),
32277            )
32278            .ok()
32279        }
32280    }
32281    pub unsafe fn DocumentOriginUri(
32282        &self,
32283        value: *mut windows_core::PWSTR,
32284    ) -> windows_core::Result<()> {
32285        unsafe {
32286            (windows_core::Interface::vtable(self).DocumentOriginUri)(
32287                windows_core::Interface::as_raw(self),
32288                value as _,
32289            )
32290            .ok()
32291        }
32292    }
32293    pub unsafe fn FileExtension(
32294        &self,
32295        value: *mut windows_core::PWSTR,
32296    ) -> windows_core::Result<()> {
32297        unsafe {
32298            (windows_core::Interface::vtable(self).FileExtension)(
32299                windows_core::Interface::as_raw(self),
32300                value as _,
32301            )
32302            .ok()
32303        }
32304    }
32305    pub unsafe fn FilePath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
32306        unsafe {
32307            (windows_core::Interface::vtable(self).FilePath)(
32308                windows_core::Interface::as_raw(self),
32309                value as _,
32310            )
32311            .ok()
32312        }
32313    }
32314    pub unsafe fn SuppressDefaultPolicy(
32315        &self,
32316        value: *mut windows_core::BOOL,
32317    ) -> windows_core::Result<()> {
32318        unsafe {
32319            (windows_core::Interface::vtable(self).SuppressDefaultPolicy)(
32320                windows_core::Interface::as_raw(self),
32321                value as _,
32322            )
32323            .ok()
32324        }
32325    }
32326    pub unsafe fn SetSuppressDefaultPolicy(&self, value: bool) -> windows_core::Result<()> {
32327        unsafe {
32328            (windows_core::Interface::vtable(self).SetSuppressDefaultPolicy)(
32329                windows_core::Interface::as_raw(self),
32330                value.into(),
32331            )
32332            .ok()
32333        }
32334    }
32335    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
32336        unsafe {
32337            let mut result__ = core::mem::zeroed();
32338            (windows_core::Interface::vtable(self).GetDeferral)(
32339                windows_core::Interface::as_raw(self),
32340                &mut result__,
32341            )
32342            .and_then(|| windows_core::Type::from_abi(result__))
32343        }
32344    }
32345}
32346#[repr(C)]
32347#[doc(hidden)]
32348pub struct ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Vtbl {
32349    pub base__: windows_core::IUnknown_Vtbl,
32350    pub CancelSave: unsafe extern "system" fn(
32351        *mut core::ffi::c_void,
32352        *mut windows_core::BOOL,
32353    ) -> windows_core::HRESULT,
32354    pub SetCancelSave: unsafe extern "system" fn(
32355        *mut core::ffi::c_void,
32356        windows_core::BOOL,
32357    ) -> windows_core::HRESULT,
32358    pub DocumentOriginUri: unsafe extern "system" fn(
32359        *mut core::ffi::c_void,
32360        *mut windows_core::PWSTR,
32361    ) -> windows_core::HRESULT,
32362    pub FileExtension: unsafe extern "system" fn(
32363        *mut core::ffi::c_void,
32364        *mut windows_core::PWSTR,
32365    ) -> windows_core::HRESULT,
32366    pub FilePath: unsafe extern "system" fn(
32367        *mut core::ffi::c_void,
32368        *mut windows_core::PWSTR,
32369    ) -> windows_core::HRESULT,
32370    pub SuppressDefaultPolicy: unsafe extern "system" fn(
32371        *mut core::ffi::c_void,
32372        *mut windows_core::BOOL,
32373    ) -> windows_core::HRESULT,
32374    pub SetSuppressDefaultPolicy: unsafe extern "system" fn(
32375        *mut core::ffi::c_void,
32376        windows_core::BOOL,
32377    ) -> windows_core::HRESULT,
32378    pub GetDeferral: unsafe extern "system" fn(
32379        *mut core::ffi::c_void,
32380        *mut *mut core::ffi::c_void,
32381    ) -> windows_core::HRESULT,
32382}
32383pub trait ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl:
32384    windows_core::IUnknownImpl
32385{
32386    fn CancelSave(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
32387    fn SetCancelSave(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
32388    fn DocumentOriginUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
32389    fn FileExtension(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
32390    fn FilePath(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
32391    fn SuppressDefaultPolicy(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
32392    fn SetSuppressDefaultPolicy(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
32393    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
32394}
32395impl ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Vtbl {
32396    pub const fn new<
32397        Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32398        const OFFSET: isize,
32399    >() -> Self {
32400        unsafe extern "system" fn CancelSave<
32401            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32402            const OFFSET: isize,
32403        >(
32404            this: *mut core::ffi::c_void,
32405            value: *mut windows_core::BOOL,
32406        ) -> windows_core::HRESULT {
32407            unsafe {
32408                let this: &Identity =
32409                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32410                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::CancelSave(
32411                    this,
32412                    core::mem::transmute_copy(&value),
32413                )
32414                .into()
32415            }
32416        }
32417        unsafe extern "system" fn SetCancelSave<
32418            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32419            const OFFSET: isize,
32420        >(
32421            this: *mut core::ffi::c_void,
32422            value: windows_core::BOOL,
32423        ) -> windows_core::HRESULT {
32424            unsafe {
32425                let this: &Identity =
32426                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32427                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::SetCancelSave(
32428                    this,
32429                    core::mem::transmute_copy(&value),
32430                )
32431                .into()
32432            }
32433        }
32434        unsafe extern "system" fn DocumentOriginUri<
32435            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32436            const OFFSET: isize,
32437        >(
32438            this: *mut core::ffi::c_void,
32439            value: *mut windows_core::PWSTR,
32440        ) -> windows_core::HRESULT {
32441            unsafe {
32442                let this: &Identity =
32443                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32444                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::DocumentOriginUri(
32445                    this,
32446                    core::mem::transmute_copy(&value),
32447                )
32448                .into()
32449            }
32450        }
32451        unsafe extern "system" fn FileExtension<
32452            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32453            const OFFSET: isize,
32454        >(
32455            this: *mut core::ffi::c_void,
32456            value: *mut windows_core::PWSTR,
32457        ) -> windows_core::HRESULT {
32458            unsafe {
32459                let this: &Identity =
32460                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32461                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::FileExtension(
32462                    this,
32463                    core::mem::transmute_copy(&value),
32464                )
32465                .into()
32466            }
32467        }
32468        unsafe extern "system" fn FilePath<
32469            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32470            const OFFSET: isize,
32471        >(
32472            this: *mut core::ffi::c_void,
32473            value: *mut windows_core::PWSTR,
32474        ) -> windows_core::HRESULT {
32475            unsafe {
32476                let this: &Identity =
32477                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32478                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::FilePath(
32479                    this,
32480                    core::mem::transmute_copy(&value),
32481                )
32482                .into()
32483            }
32484        }
32485        unsafe extern "system" fn SuppressDefaultPolicy<
32486            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32487            const OFFSET: isize,
32488        >(
32489            this: *mut core::ffi::c_void,
32490            value: *mut windows_core::BOOL,
32491        ) -> windows_core::HRESULT {
32492            unsafe {
32493                let this: &Identity =
32494                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32495                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::SuppressDefaultPolicy(
32496                    this,
32497                    core::mem::transmute_copy(&value),
32498                )
32499                .into()
32500            }
32501        }
32502        unsafe extern "system" fn SetSuppressDefaultPolicy<
32503            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32504            const OFFSET: isize,
32505        >(
32506            this: *mut core::ffi::c_void,
32507            value: windows_core::BOOL,
32508        ) -> windows_core::HRESULT {
32509            unsafe {
32510                let this: &Identity =
32511                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32512                ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::SetSuppressDefaultPolicy(
32513                    this,
32514                    core::mem::transmute_copy(&value),
32515                )
32516                .into()
32517            }
32518        }
32519        unsafe extern "system" fn GetDeferral<
32520            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl,
32521            const OFFSET: isize,
32522        >(
32523            this: *mut core::ffi::c_void,
32524            value: *mut *mut core::ffi::c_void,
32525        ) -> windows_core::HRESULT {
32526            unsafe {
32527                let this: &Identity =
32528                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32529                match ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Impl::GetDeferral(this) {
32530                    Ok(ok__) => {
32531                        value.write(core::mem::transmute(ok__));
32532                        windows_core::HRESULT(0)
32533                    }
32534                    Err(err) => err.into(),
32535                }
32536            }
32537        }
32538        Self {
32539            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32540            CancelSave: CancelSave::<Identity, OFFSET>,
32541            SetCancelSave: SetCancelSave::<Identity, OFFSET>,
32542            DocumentOriginUri: DocumentOriginUri::<Identity, OFFSET>,
32543            FileExtension: FileExtension::<Identity, OFFSET>,
32544            FilePath: FilePath::<Identity, OFFSET>,
32545            SuppressDefaultPolicy: SuppressDefaultPolicy::<Identity, OFFSET>,
32546            SetSuppressDefaultPolicy: SetSuppressDefaultPolicy::<Identity, OFFSET>,
32547            GetDeferral: GetDeferral::<Identity, OFFSET>,
32548        }
32549    }
32550    pub fn matches(iid: &windows_core::GUID) -> bool {
32551        iid == & < ICoreWebView2SaveFileSecurityCheckStartingEventArgs as windows_core::Interface >::IID
32552    }
32553}
32554impl windows_core::RuntimeName for ICoreWebView2SaveFileSecurityCheckStartingEventArgs {}
32555windows_core::imp::define_interface!(
32556    ICoreWebView2SaveFileSecurityCheckStartingEventHandler,
32557    ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Vtbl,
32558    0x7899576c_19e3_57c8_b7d1_55808292de57
32559);
32560windows_core::imp::interface_hierarchy!(
32561    ICoreWebView2SaveFileSecurityCheckStartingEventHandler,
32562    windows_core::IUnknown
32563);
32564impl ICoreWebView2SaveFileSecurityCheckStartingEventHandler {
32565    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
32566    where
32567        P0: windows_core::Param<ICoreWebView2>,
32568        P1: windows_core::Param<ICoreWebView2SaveFileSecurityCheckStartingEventArgs>,
32569    {
32570        unsafe {
32571            (windows_core::Interface::vtable(self).Invoke)(
32572                windows_core::Interface::as_raw(self),
32573                sender.param().abi(),
32574                args.param().abi(),
32575            )
32576            .ok()
32577        }
32578    }
32579}
32580#[repr(C)]
32581#[doc(hidden)]
32582pub struct ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Vtbl {
32583    pub base__: windows_core::IUnknown_Vtbl,
32584    pub Invoke: unsafe extern "system" fn(
32585        *mut core::ffi::c_void,
32586        *mut core::ffi::c_void,
32587        *mut core::ffi::c_void,
32588    ) -> windows_core::HRESULT,
32589}
32590pub trait ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Impl:
32591    windows_core::IUnknownImpl
32592{
32593    fn Invoke(
32594        &self,
32595        sender: windows_core::Ref<'_, ICoreWebView2>,
32596        args: windows_core::Ref<'_, ICoreWebView2SaveFileSecurityCheckStartingEventArgs>,
32597    ) -> windows_core::Result<()>;
32598}
32599impl ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Vtbl {
32600    pub const fn new<
32601        Identity: ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Impl,
32602        const OFFSET: isize,
32603    >() -> Self {
32604        unsafe extern "system" fn Invoke<
32605            Identity: ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Impl,
32606            const OFFSET: isize,
32607        >(
32608            this: *mut core::ffi::c_void,
32609            sender: *mut core::ffi::c_void,
32610            args: *mut core::ffi::c_void,
32611        ) -> windows_core::HRESULT {
32612            unsafe {
32613                let this: &Identity =
32614                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32615                ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Impl::Invoke(
32616                    this,
32617                    core::mem::transmute_copy(&sender),
32618                    core::mem::transmute_copy(&args),
32619                )
32620                .into()
32621            }
32622        }
32623        Self {
32624            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32625            Invoke: Invoke::<Identity, OFFSET>,
32626        }
32627    }
32628    pub fn matches(iid: &windows_core::GUID) -> bool {
32629        iid == & < ICoreWebView2SaveFileSecurityCheckStartingEventHandler as windows_core::Interface >::IID
32630    }
32631}
32632impl windows_core::RuntimeName for ICoreWebView2SaveFileSecurityCheckStartingEventHandler {}
32633windows_core::imp::define_interface!(
32634    ICoreWebView2ScreenCaptureStartingEventArgs,
32635    ICoreWebView2ScreenCaptureStartingEventArgs_Vtbl,
32636    0x892c03fd_aee3_5eba_a1fa_6fd2f6484b2b
32637);
32638windows_core::imp::interface_hierarchy!(
32639    ICoreWebView2ScreenCaptureStartingEventArgs,
32640    windows_core::IUnknown
32641);
32642impl ICoreWebView2ScreenCaptureStartingEventArgs {
32643    pub unsafe fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
32644        unsafe {
32645            (windows_core::Interface::vtable(self).Cancel)(
32646                windows_core::Interface::as_raw(self),
32647                value as _,
32648            )
32649            .ok()
32650        }
32651    }
32652    pub unsafe fn SetCancel(&self, value: bool) -> windows_core::Result<()> {
32653        unsafe {
32654            (windows_core::Interface::vtable(self).SetCancel)(
32655                windows_core::Interface::as_raw(self),
32656                value.into(),
32657            )
32658            .ok()
32659        }
32660    }
32661    pub unsafe fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
32662        unsafe {
32663            (windows_core::Interface::vtable(self).Handled)(
32664                windows_core::Interface::as_raw(self),
32665                value as _,
32666            )
32667            .ok()
32668        }
32669    }
32670    pub unsafe fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
32671        unsafe {
32672            (windows_core::Interface::vtable(self).SetHandled)(
32673                windows_core::Interface::as_raw(self),
32674                value.into(),
32675            )
32676            .ok()
32677        }
32678    }
32679    pub unsafe fn OriginalSourceFrameInfo(&self) -> windows_core::Result<ICoreWebView2FrameInfo> {
32680        unsafe {
32681            let mut result__ = core::mem::zeroed();
32682            (windows_core::Interface::vtable(self).OriginalSourceFrameInfo)(
32683                windows_core::Interface::as_raw(self),
32684                &mut result__,
32685            )
32686            .and_then(|| windows_core::Type::from_abi(result__))
32687        }
32688    }
32689    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
32690        unsafe {
32691            let mut result__ = core::mem::zeroed();
32692            (windows_core::Interface::vtable(self).GetDeferral)(
32693                windows_core::Interface::as_raw(self),
32694                &mut result__,
32695            )
32696            .and_then(|| windows_core::Type::from_abi(result__))
32697        }
32698    }
32699}
32700#[repr(C)]
32701#[doc(hidden)]
32702pub struct ICoreWebView2ScreenCaptureStartingEventArgs_Vtbl {
32703    pub base__: windows_core::IUnknown_Vtbl,
32704    pub Cancel: unsafe extern "system" fn(
32705        *mut core::ffi::c_void,
32706        *mut windows_core::BOOL,
32707    ) -> windows_core::HRESULT,
32708    pub SetCancel: unsafe extern "system" fn(
32709        *mut core::ffi::c_void,
32710        windows_core::BOOL,
32711    ) -> windows_core::HRESULT,
32712    pub Handled: unsafe extern "system" fn(
32713        *mut core::ffi::c_void,
32714        *mut windows_core::BOOL,
32715    ) -> windows_core::HRESULT,
32716    pub SetHandled: unsafe extern "system" fn(
32717        *mut core::ffi::c_void,
32718        windows_core::BOOL,
32719    ) -> windows_core::HRESULT,
32720    pub OriginalSourceFrameInfo: unsafe extern "system" fn(
32721        *mut core::ffi::c_void,
32722        *mut *mut core::ffi::c_void,
32723    ) -> windows_core::HRESULT,
32724    pub GetDeferral: unsafe extern "system" fn(
32725        *mut core::ffi::c_void,
32726        *mut *mut core::ffi::c_void,
32727    ) -> windows_core::HRESULT,
32728}
32729pub trait ICoreWebView2ScreenCaptureStartingEventArgs_Impl: windows_core::IUnknownImpl {
32730    fn Cancel(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
32731    fn SetCancel(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
32732    fn Handled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
32733    fn SetHandled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
32734    fn OriginalSourceFrameInfo(&self) -> windows_core::Result<ICoreWebView2FrameInfo>;
32735    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
32736}
32737impl ICoreWebView2ScreenCaptureStartingEventArgs_Vtbl {
32738    pub const fn new<
32739        Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32740        const OFFSET: isize,
32741    >() -> Self {
32742        unsafe extern "system" fn Cancel<
32743            Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32744            const OFFSET: isize,
32745        >(
32746            this: *mut core::ffi::c_void,
32747            value: *mut windows_core::BOOL,
32748        ) -> windows_core::HRESULT {
32749            unsafe {
32750                let this: &Identity =
32751                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32752                ICoreWebView2ScreenCaptureStartingEventArgs_Impl::Cancel(
32753                    this,
32754                    core::mem::transmute_copy(&value),
32755                )
32756                .into()
32757            }
32758        }
32759        unsafe extern "system" fn SetCancel<
32760            Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32761            const OFFSET: isize,
32762        >(
32763            this: *mut core::ffi::c_void,
32764            value: windows_core::BOOL,
32765        ) -> windows_core::HRESULT {
32766            unsafe {
32767                let this: &Identity =
32768                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32769                ICoreWebView2ScreenCaptureStartingEventArgs_Impl::SetCancel(
32770                    this,
32771                    core::mem::transmute_copy(&value),
32772                )
32773                .into()
32774            }
32775        }
32776        unsafe extern "system" fn Handled<
32777            Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32778            const OFFSET: isize,
32779        >(
32780            this: *mut core::ffi::c_void,
32781            value: *mut windows_core::BOOL,
32782        ) -> windows_core::HRESULT {
32783            unsafe {
32784                let this: &Identity =
32785                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32786                ICoreWebView2ScreenCaptureStartingEventArgs_Impl::Handled(
32787                    this,
32788                    core::mem::transmute_copy(&value),
32789                )
32790                .into()
32791            }
32792        }
32793        unsafe extern "system" fn SetHandled<
32794            Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32795            const OFFSET: isize,
32796        >(
32797            this: *mut core::ffi::c_void,
32798            value: windows_core::BOOL,
32799        ) -> windows_core::HRESULT {
32800            unsafe {
32801                let this: &Identity =
32802                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32803                ICoreWebView2ScreenCaptureStartingEventArgs_Impl::SetHandled(
32804                    this,
32805                    core::mem::transmute_copy(&value),
32806                )
32807                .into()
32808            }
32809        }
32810        unsafe extern "system" fn OriginalSourceFrameInfo<
32811            Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32812            const OFFSET: isize,
32813        >(
32814            this: *mut core::ffi::c_void,
32815            value: *mut *mut core::ffi::c_void,
32816        ) -> windows_core::HRESULT {
32817            unsafe {
32818                let this: &Identity =
32819                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32820                match ICoreWebView2ScreenCaptureStartingEventArgs_Impl::OriginalSourceFrameInfo(
32821                    this,
32822                ) {
32823                    Ok(ok__) => {
32824                        value.write(core::mem::transmute(ok__));
32825                        windows_core::HRESULT(0)
32826                    }
32827                    Err(err) => err.into(),
32828                }
32829            }
32830        }
32831        unsafe extern "system" fn GetDeferral<
32832            Identity: ICoreWebView2ScreenCaptureStartingEventArgs_Impl,
32833            const OFFSET: isize,
32834        >(
32835            this: *mut core::ffi::c_void,
32836            value: *mut *mut core::ffi::c_void,
32837        ) -> windows_core::HRESULT {
32838            unsafe {
32839                let this: &Identity =
32840                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32841                match ICoreWebView2ScreenCaptureStartingEventArgs_Impl::GetDeferral(this) {
32842                    Ok(ok__) => {
32843                        value.write(core::mem::transmute(ok__));
32844                        windows_core::HRESULT(0)
32845                    }
32846                    Err(err) => err.into(),
32847                }
32848            }
32849        }
32850        Self {
32851            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32852            Cancel: Cancel::<Identity, OFFSET>,
32853            SetCancel: SetCancel::<Identity, OFFSET>,
32854            Handled: Handled::<Identity, OFFSET>,
32855            SetHandled: SetHandled::<Identity, OFFSET>,
32856            OriginalSourceFrameInfo: OriginalSourceFrameInfo::<Identity, OFFSET>,
32857            GetDeferral: GetDeferral::<Identity, OFFSET>,
32858        }
32859    }
32860    pub fn matches(iid: &windows_core::GUID) -> bool {
32861        iid == &<ICoreWebView2ScreenCaptureStartingEventArgs as windows_core::Interface>::IID
32862    }
32863}
32864impl windows_core::RuntimeName for ICoreWebView2ScreenCaptureStartingEventArgs {}
32865windows_core::imp::define_interface!(
32866    ICoreWebView2ScreenCaptureStartingEventHandler,
32867    ICoreWebView2ScreenCaptureStartingEventHandler_Vtbl,
32868    0xe24ff05a_1db5_59d9_89f3_3c864268db4a
32869);
32870windows_core::imp::interface_hierarchy!(
32871    ICoreWebView2ScreenCaptureStartingEventHandler,
32872    windows_core::IUnknown
32873);
32874impl ICoreWebView2ScreenCaptureStartingEventHandler {
32875    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
32876    where
32877        P0: windows_core::Param<ICoreWebView2>,
32878        P1: windows_core::Param<ICoreWebView2ScreenCaptureStartingEventArgs>,
32879    {
32880        unsafe {
32881            (windows_core::Interface::vtable(self).Invoke)(
32882                windows_core::Interface::as_raw(self),
32883                sender.param().abi(),
32884                args.param().abi(),
32885            )
32886            .ok()
32887        }
32888    }
32889}
32890#[repr(C)]
32891#[doc(hidden)]
32892pub struct ICoreWebView2ScreenCaptureStartingEventHandler_Vtbl {
32893    pub base__: windows_core::IUnknown_Vtbl,
32894    pub Invoke: unsafe extern "system" fn(
32895        *mut core::ffi::c_void,
32896        *mut core::ffi::c_void,
32897        *mut core::ffi::c_void,
32898    ) -> windows_core::HRESULT,
32899}
32900pub trait ICoreWebView2ScreenCaptureStartingEventHandler_Impl: windows_core::IUnknownImpl {
32901    fn Invoke(
32902        &self,
32903        sender: windows_core::Ref<'_, ICoreWebView2>,
32904        args: windows_core::Ref<'_, ICoreWebView2ScreenCaptureStartingEventArgs>,
32905    ) -> windows_core::Result<()>;
32906}
32907impl ICoreWebView2ScreenCaptureStartingEventHandler_Vtbl {
32908    pub const fn new<
32909        Identity: ICoreWebView2ScreenCaptureStartingEventHandler_Impl,
32910        const OFFSET: isize,
32911    >() -> Self {
32912        unsafe extern "system" fn Invoke<
32913            Identity: ICoreWebView2ScreenCaptureStartingEventHandler_Impl,
32914            const OFFSET: isize,
32915        >(
32916            this: *mut core::ffi::c_void,
32917            sender: *mut core::ffi::c_void,
32918            args: *mut core::ffi::c_void,
32919        ) -> windows_core::HRESULT {
32920            unsafe {
32921                let this: &Identity =
32922                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32923                ICoreWebView2ScreenCaptureStartingEventHandler_Impl::Invoke(
32924                    this,
32925                    core::mem::transmute_copy(&sender),
32926                    core::mem::transmute_copy(&args),
32927                )
32928                .into()
32929            }
32930        }
32931        Self {
32932            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32933            Invoke: Invoke::<Identity, OFFSET>,
32934        }
32935    }
32936    pub fn matches(iid: &windows_core::GUID) -> bool {
32937        iid == &<ICoreWebView2ScreenCaptureStartingEventHandler as windows_core::Interface>::IID
32938    }
32939}
32940impl windows_core::RuntimeName for ICoreWebView2ScreenCaptureStartingEventHandler {}
32941windows_core::imp::define_interface!(
32942    ICoreWebView2ScriptDialogOpeningEventArgs,
32943    ICoreWebView2ScriptDialogOpeningEventArgs_Vtbl,
32944    0x7390bb70_abe0_4843_9529_f143b31b03d6
32945);
32946windows_core::imp::interface_hierarchy!(
32947    ICoreWebView2ScriptDialogOpeningEventArgs,
32948    windows_core::IUnknown
32949);
32950impl ICoreWebView2ScriptDialogOpeningEventArgs {
32951    pub unsafe fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
32952        unsafe {
32953            (windows_core::Interface::vtable(self).Uri)(
32954                windows_core::Interface::as_raw(self),
32955                uri as _,
32956            )
32957            .ok()
32958        }
32959    }
32960    pub unsafe fn Kind(
32961        &self,
32962        kind: *mut COREWEBVIEW2_SCRIPT_DIALOG_KIND,
32963    ) -> windows_core::Result<()> {
32964        unsafe {
32965            (windows_core::Interface::vtable(self).Kind)(
32966                windows_core::Interface::as_raw(self),
32967                kind as _,
32968            )
32969            .ok()
32970        }
32971    }
32972    pub unsafe fn Message(&self, message: *mut windows_core::PWSTR) -> windows_core::Result<()> {
32973        unsafe {
32974            (windows_core::Interface::vtable(self).Message)(
32975                windows_core::Interface::as_raw(self),
32976                message as _,
32977            )
32978            .ok()
32979        }
32980    }
32981    pub unsafe fn Accept(&self) -> windows_core::Result<()> {
32982        unsafe {
32983            (windows_core::Interface::vtable(self).Accept)(windows_core::Interface::as_raw(self))
32984                .ok()
32985        }
32986    }
32987    pub unsafe fn DefaultText(
32988        &self,
32989        defaulttext: *mut windows_core::PWSTR,
32990    ) -> windows_core::Result<()> {
32991        unsafe {
32992            (windows_core::Interface::vtable(self).DefaultText)(
32993                windows_core::Interface::as_raw(self),
32994                defaulttext as _,
32995            )
32996            .ok()
32997        }
32998    }
32999    pub unsafe fn ResultText(
33000        &self,
33001        resulttext: *mut windows_core::PWSTR,
33002    ) -> windows_core::Result<()> {
33003        unsafe {
33004            (windows_core::Interface::vtable(self).ResultText)(
33005                windows_core::Interface::as_raw(self),
33006                resulttext as _,
33007            )
33008            .ok()
33009        }
33010    }
33011    pub unsafe fn SetResultText<P0>(&self, resulttext: P0) -> windows_core::Result<()>
33012    where
33013        P0: windows_core::Param<windows_core::PCWSTR>,
33014    {
33015        unsafe {
33016            (windows_core::Interface::vtable(self).SetResultText)(
33017                windows_core::Interface::as_raw(self),
33018                resulttext.param().abi(),
33019            )
33020            .ok()
33021        }
33022    }
33023    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
33024        unsafe {
33025            let mut result__ = core::mem::zeroed();
33026            (windows_core::Interface::vtable(self).GetDeferral)(
33027                windows_core::Interface::as_raw(self),
33028                &mut result__,
33029            )
33030            .and_then(|| windows_core::Type::from_abi(result__))
33031        }
33032    }
33033}
33034#[repr(C)]
33035#[doc(hidden)]
33036pub struct ICoreWebView2ScriptDialogOpeningEventArgs_Vtbl {
33037    pub base__: windows_core::IUnknown_Vtbl,
33038    pub Uri: unsafe extern "system" fn(
33039        *mut core::ffi::c_void,
33040        *mut windows_core::PWSTR,
33041    ) -> windows_core::HRESULT,
33042    pub Kind: unsafe extern "system" fn(
33043        *mut core::ffi::c_void,
33044        *mut COREWEBVIEW2_SCRIPT_DIALOG_KIND,
33045    ) -> windows_core::HRESULT,
33046    pub Message: unsafe extern "system" fn(
33047        *mut core::ffi::c_void,
33048        *mut windows_core::PWSTR,
33049    ) -> windows_core::HRESULT,
33050    pub Accept: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
33051    pub DefaultText: unsafe extern "system" fn(
33052        *mut core::ffi::c_void,
33053        *mut windows_core::PWSTR,
33054    ) -> windows_core::HRESULT,
33055    pub ResultText: unsafe extern "system" fn(
33056        *mut core::ffi::c_void,
33057        *mut windows_core::PWSTR,
33058    ) -> windows_core::HRESULT,
33059    pub SetResultText: unsafe extern "system" fn(
33060        *mut core::ffi::c_void,
33061        windows_core::PCWSTR,
33062    ) -> windows_core::HRESULT,
33063    pub GetDeferral: unsafe extern "system" fn(
33064        *mut core::ffi::c_void,
33065        *mut *mut core::ffi::c_void,
33066    ) -> windows_core::HRESULT,
33067}
33068pub trait ICoreWebView2ScriptDialogOpeningEventArgs_Impl: windows_core::IUnknownImpl {
33069    fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33070    fn Kind(&self, kind: *mut COREWEBVIEW2_SCRIPT_DIALOG_KIND) -> windows_core::Result<()>;
33071    fn Message(&self, message: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33072    fn Accept(&self) -> windows_core::Result<()>;
33073    fn DefaultText(&self, defaulttext: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33074    fn ResultText(&self, resulttext: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33075    fn SetResultText(&self, resulttext: &windows_core::PCWSTR) -> windows_core::Result<()>;
33076    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
33077}
33078impl ICoreWebView2ScriptDialogOpeningEventArgs_Vtbl {
33079    pub const fn new<
33080        Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33081        const OFFSET: isize,
33082    >() -> Self {
33083        unsafe extern "system" fn Uri<
33084            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33085            const OFFSET: isize,
33086        >(
33087            this: *mut core::ffi::c_void,
33088            uri: *mut windows_core::PWSTR,
33089        ) -> windows_core::HRESULT {
33090            unsafe {
33091                let this: &Identity =
33092                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33093                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::Uri(
33094                    this,
33095                    core::mem::transmute_copy(&uri),
33096                )
33097                .into()
33098            }
33099        }
33100        unsafe extern "system" fn Kind<
33101            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33102            const OFFSET: isize,
33103        >(
33104            this: *mut core::ffi::c_void,
33105            kind: *mut COREWEBVIEW2_SCRIPT_DIALOG_KIND,
33106        ) -> windows_core::HRESULT {
33107            unsafe {
33108                let this: &Identity =
33109                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33110                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::Kind(
33111                    this,
33112                    core::mem::transmute_copy(&kind),
33113                )
33114                .into()
33115            }
33116        }
33117        unsafe extern "system" fn Message<
33118            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33119            const OFFSET: isize,
33120        >(
33121            this: *mut core::ffi::c_void,
33122            message: *mut windows_core::PWSTR,
33123        ) -> windows_core::HRESULT {
33124            unsafe {
33125                let this: &Identity =
33126                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33127                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::Message(
33128                    this,
33129                    core::mem::transmute_copy(&message),
33130                )
33131                .into()
33132            }
33133        }
33134        unsafe extern "system" fn Accept<
33135            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33136            const OFFSET: isize,
33137        >(
33138            this: *mut core::ffi::c_void,
33139        ) -> windows_core::HRESULT {
33140            unsafe {
33141                let this: &Identity =
33142                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33143                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::Accept(this).into()
33144            }
33145        }
33146        unsafe extern "system" fn DefaultText<
33147            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33148            const OFFSET: isize,
33149        >(
33150            this: *mut core::ffi::c_void,
33151            defaulttext: *mut windows_core::PWSTR,
33152        ) -> windows_core::HRESULT {
33153            unsafe {
33154                let this: &Identity =
33155                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33156                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::DefaultText(
33157                    this,
33158                    core::mem::transmute_copy(&defaulttext),
33159                )
33160                .into()
33161            }
33162        }
33163        unsafe extern "system" fn ResultText<
33164            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33165            const OFFSET: isize,
33166        >(
33167            this: *mut core::ffi::c_void,
33168            resulttext: *mut windows_core::PWSTR,
33169        ) -> windows_core::HRESULT {
33170            unsafe {
33171                let this: &Identity =
33172                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33173                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::ResultText(
33174                    this,
33175                    core::mem::transmute_copy(&resulttext),
33176                )
33177                .into()
33178            }
33179        }
33180        unsafe extern "system" fn SetResultText<
33181            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33182            const OFFSET: isize,
33183        >(
33184            this: *mut core::ffi::c_void,
33185            resulttext: windows_core::PCWSTR,
33186        ) -> windows_core::HRESULT {
33187            unsafe {
33188                let this: &Identity =
33189                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33190                ICoreWebView2ScriptDialogOpeningEventArgs_Impl::SetResultText(
33191                    this,
33192                    core::mem::transmute(&resulttext),
33193                )
33194                .into()
33195            }
33196        }
33197        unsafe extern "system" fn GetDeferral<
33198            Identity: ICoreWebView2ScriptDialogOpeningEventArgs_Impl,
33199            const OFFSET: isize,
33200        >(
33201            this: *mut core::ffi::c_void,
33202            deferral: *mut *mut core::ffi::c_void,
33203        ) -> windows_core::HRESULT {
33204            unsafe {
33205                let this: &Identity =
33206                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33207                match ICoreWebView2ScriptDialogOpeningEventArgs_Impl::GetDeferral(this) {
33208                    Ok(ok__) => {
33209                        deferral.write(core::mem::transmute(ok__));
33210                        windows_core::HRESULT(0)
33211                    }
33212                    Err(err) => err.into(),
33213                }
33214            }
33215        }
33216        Self {
33217            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33218            Uri: Uri::<Identity, OFFSET>,
33219            Kind: Kind::<Identity, OFFSET>,
33220            Message: Message::<Identity, OFFSET>,
33221            Accept: Accept::<Identity, OFFSET>,
33222            DefaultText: DefaultText::<Identity, OFFSET>,
33223            ResultText: ResultText::<Identity, OFFSET>,
33224            SetResultText: SetResultText::<Identity, OFFSET>,
33225            GetDeferral: GetDeferral::<Identity, OFFSET>,
33226        }
33227    }
33228    pub fn matches(iid: &windows_core::GUID) -> bool {
33229        iid == &<ICoreWebView2ScriptDialogOpeningEventArgs as windows_core::Interface>::IID
33230    }
33231}
33232impl windows_core::RuntimeName for ICoreWebView2ScriptDialogOpeningEventArgs {}
33233windows_core::imp::define_interface!(
33234    ICoreWebView2ScriptDialogOpeningEventHandler,
33235    ICoreWebView2ScriptDialogOpeningEventHandler_Vtbl,
33236    0xef381bf9_afa8_4e37_91c4_8ac48524bdfb
33237);
33238windows_core::imp::interface_hierarchy!(
33239    ICoreWebView2ScriptDialogOpeningEventHandler,
33240    windows_core::IUnknown
33241);
33242impl ICoreWebView2ScriptDialogOpeningEventHandler {
33243    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
33244    where
33245        P0: windows_core::Param<ICoreWebView2>,
33246        P1: windows_core::Param<ICoreWebView2ScriptDialogOpeningEventArgs>,
33247    {
33248        unsafe {
33249            (windows_core::Interface::vtable(self).Invoke)(
33250                windows_core::Interface::as_raw(self),
33251                sender.param().abi(),
33252                args.param().abi(),
33253            )
33254            .ok()
33255        }
33256    }
33257}
33258#[repr(C)]
33259#[doc(hidden)]
33260pub struct ICoreWebView2ScriptDialogOpeningEventHandler_Vtbl {
33261    pub base__: windows_core::IUnknown_Vtbl,
33262    pub Invoke: unsafe extern "system" fn(
33263        *mut core::ffi::c_void,
33264        *mut core::ffi::c_void,
33265        *mut core::ffi::c_void,
33266    ) -> windows_core::HRESULT,
33267}
33268pub trait ICoreWebView2ScriptDialogOpeningEventHandler_Impl: windows_core::IUnknownImpl {
33269    fn Invoke(
33270        &self,
33271        sender: windows_core::Ref<'_, ICoreWebView2>,
33272        args: windows_core::Ref<'_, ICoreWebView2ScriptDialogOpeningEventArgs>,
33273    ) -> windows_core::Result<()>;
33274}
33275impl ICoreWebView2ScriptDialogOpeningEventHandler_Vtbl {
33276    pub const fn new<
33277        Identity: ICoreWebView2ScriptDialogOpeningEventHandler_Impl,
33278        const OFFSET: isize,
33279    >() -> Self {
33280        unsafe extern "system" fn Invoke<
33281            Identity: ICoreWebView2ScriptDialogOpeningEventHandler_Impl,
33282            const OFFSET: isize,
33283        >(
33284            this: *mut core::ffi::c_void,
33285            sender: *mut core::ffi::c_void,
33286            args: *mut core::ffi::c_void,
33287        ) -> windows_core::HRESULT {
33288            unsafe {
33289                let this: &Identity =
33290                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33291                ICoreWebView2ScriptDialogOpeningEventHandler_Impl::Invoke(
33292                    this,
33293                    core::mem::transmute_copy(&sender),
33294                    core::mem::transmute_copy(&args),
33295                )
33296                .into()
33297            }
33298        }
33299        Self {
33300            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33301            Invoke: Invoke::<Identity, OFFSET>,
33302        }
33303    }
33304    pub fn matches(iid: &windows_core::GUID) -> bool {
33305        iid == &<ICoreWebView2ScriptDialogOpeningEventHandler as windows_core::Interface>::IID
33306    }
33307}
33308impl windows_core::RuntimeName for ICoreWebView2ScriptDialogOpeningEventHandler {}
33309windows_core::imp::define_interface!(
33310    ICoreWebView2ScriptException,
33311    ICoreWebView2ScriptException_Vtbl,
33312    0x054dae00_84a3_49ff_bc17_4012a90bc9fd
33313);
33314windows_core::imp::interface_hierarchy!(ICoreWebView2ScriptException, windows_core::IUnknown);
33315impl ICoreWebView2ScriptException {
33316    pub unsafe fn LineNumber(&self, value: *mut u32) -> windows_core::Result<()> {
33317        unsafe {
33318            (windows_core::Interface::vtable(self).LineNumber)(
33319                windows_core::Interface::as_raw(self),
33320                value as _,
33321            )
33322            .ok()
33323        }
33324    }
33325    pub unsafe fn ColumnNumber(&self, value: *mut u32) -> windows_core::Result<()> {
33326        unsafe {
33327            (windows_core::Interface::vtable(self).ColumnNumber)(
33328                windows_core::Interface::as_raw(self),
33329                value as _,
33330            )
33331            .ok()
33332        }
33333    }
33334    pub unsafe fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
33335        unsafe {
33336            (windows_core::Interface::vtable(self).Name)(
33337                windows_core::Interface::as_raw(self),
33338                value as _,
33339            )
33340            .ok()
33341        }
33342    }
33343    pub unsafe fn Message(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
33344        unsafe {
33345            (windows_core::Interface::vtable(self).Message)(
33346                windows_core::Interface::as_raw(self),
33347                value as _,
33348            )
33349            .ok()
33350        }
33351    }
33352    pub unsafe fn ToJson(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
33353        unsafe {
33354            (windows_core::Interface::vtable(self).ToJson)(
33355                windows_core::Interface::as_raw(self),
33356                value as _,
33357            )
33358            .ok()
33359        }
33360    }
33361}
33362#[repr(C)]
33363#[doc(hidden)]
33364pub struct ICoreWebView2ScriptException_Vtbl {
33365    pub base__: windows_core::IUnknown_Vtbl,
33366    pub LineNumber:
33367        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
33368    pub ColumnNumber:
33369        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
33370    pub Name: unsafe extern "system" fn(
33371        *mut core::ffi::c_void,
33372        *mut windows_core::PWSTR,
33373    ) -> windows_core::HRESULT,
33374    pub Message: unsafe extern "system" fn(
33375        *mut core::ffi::c_void,
33376        *mut windows_core::PWSTR,
33377    ) -> windows_core::HRESULT,
33378    pub ToJson: unsafe extern "system" fn(
33379        *mut core::ffi::c_void,
33380        *mut windows_core::PWSTR,
33381    ) -> windows_core::HRESULT,
33382}
33383pub trait ICoreWebView2ScriptException_Impl: windows_core::IUnknownImpl {
33384    fn LineNumber(&self, value: *mut u32) -> windows_core::Result<()>;
33385    fn ColumnNumber(&self, value: *mut u32) -> windows_core::Result<()>;
33386    fn Name(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33387    fn Message(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33388    fn ToJson(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33389}
33390impl ICoreWebView2ScriptException_Vtbl {
33391    pub const fn new<Identity: ICoreWebView2ScriptException_Impl, const OFFSET: isize>() -> Self {
33392        unsafe extern "system" fn LineNumber<
33393            Identity: ICoreWebView2ScriptException_Impl,
33394            const OFFSET: isize,
33395        >(
33396            this: *mut core::ffi::c_void,
33397            value: *mut u32,
33398        ) -> windows_core::HRESULT {
33399            unsafe {
33400                let this: &Identity =
33401                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33402                ICoreWebView2ScriptException_Impl::LineNumber(
33403                    this,
33404                    core::mem::transmute_copy(&value),
33405                )
33406                .into()
33407            }
33408        }
33409        unsafe extern "system" fn ColumnNumber<
33410            Identity: ICoreWebView2ScriptException_Impl,
33411            const OFFSET: isize,
33412        >(
33413            this: *mut core::ffi::c_void,
33414            value: *mut u32,
33415        ) -> windows_core::HRESULT {
33416            unsafe {
33417                let this: &Identity =
33418                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33419                ICoreWebView2ScriptException_Impl::ColumnNumber(
33420                    this,
33421                    core::mem::transmute_copy(&value),
33422                )
33423                .into()
33424            }
33425        }
33426        unsafe extern "system" fn Name<
33427            Identity: ICoreWebView2ScriptException_Impl,
33428            const OFFSET: isize,
33429        >(
33430            this: *mut core::ffi::c_void,
33431            value: *mut windows_core::PWSTR,
33432        ) -> windows_core::HRESULT {
33433            unsafe {
33434                let this: &Identity =
33435                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33436                ICoreWebView2ScriptException_Impl::Name(this, core::mem::transmute_copy(&value))
33437                    .into()
33438            }
33439        }
33440        unsafe extern "system" fn Message<
33441            Identity: ICoreWebView2ScriptException_Impl,
33442            const OFFSET: isize,
33443        >(
33444            this: *mut core::ffi::c_void,
33445            value: *mut windows_core::PWSTR,
33446        ) -> windows_core::HRESULT {
33447            unsafe {
33448                let this: &Identity =
33449                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33450                ICoreWebView2ScriptException_Impl::Message(this, core::mem::transmute_copy(&value))
33451                    .into()
33452            }
33453        }
33454        unsafe extern "system" fn ToJson<
33455            Identity: ICoreWebView2ScriptException_Impl,
33456            const OFFSET: isize,
33457        >(
33458            this: *mut core::ffi::c_void,
33459            value: *mut windows_core::PWSTR,
33460        ) -> windows_core::HRESULT {
33461            unsafe {
33462                let this: &Identity =
33463                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33464                ICoreWebView2ScriptException_Impl::ToJson(this, core::mem::transmute_copy(&value))
33465                    .into()
33466            }
33467        }
33468        Self {
33469            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33470            LineNumber: LineNumber::<Identity, OFFSET>,
33471            ColumnNumber: ColumnNumber::<Identity, OFFSET>,
33472            Name: Name::<Identity, OFFSET>,
33473            Message: Message::<Identity, OFFSET>,
33474            ToJson: ToJson::<Identity, OFFSET>,
33475        }
33476    }
33477    pub fn matches(iid: &windows_core::GUID) -> bool {
33478        iid == &<ICoreWebView2ScriptException as windows_core::Interface>::IID
33479    }
33480}
33481impl windows_core::RuntimeName for ICoreWebView2ScriptException {}
33482windows_core::imp::define_interface!(
33483    ICoreWebView2ServerCertificateErrorDetectedEventArgs,
33484    ICoreWebView2ServerCertificateErrorDetectedEventArgs_Vtbl,
33485    0x012193ed_7c13_48ff_969d_a84c1f432a14
33486);
33487windows_core::imp::interface_hierarchy!(
33488    ICoreWebView2ServerCertificateErrorDetectedEventArgs,
33489    windows_core::IUnknown
33490);
33491impl ICoreWebView2ServerCertificateErrorDetectedEventArgs {
33492    pub unsafe fn ErrorStatus(
33493        &self,
33494        value: *mut COREWEBVIEW2_WEB_ERROR_STATUS,
33495    ) -> windows_core::Result<()> {
33496        unsafe {
33497            (windows_core::Interface::vtable(self).ErrorStatus)(
33498                windows_core::Interface::as_raw(self),
33499                value as _,
33500            )
33501            .ok()
33502        }
33503    }
33504    pub unsafe fn RequestUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
33505        unsafe {
33506            (windows_core::Interface::vtable(self).RequestUri)(
33507                windows_core::Interface::as_raw(self),
33508                value as _,
33509            )
33510            .ok()
33511        }
33512    }
33513    pub unsafe fn ServerCertificate(&self) -> windows_core::Result<ICoreWebView2Certificate> {
33514        unsafe {
33515            let mut result__ = core::mem::zeroed();
33516            (windows_core::Interface::vtable(self).ServerCertificate)(
33517                windows_core::Interface::as_raw(self),
33518                &mut result__,
33519            )
33520            .and_then(|| windows_core::Type::from_abi(result__))
33521        }
33522    }
33523    pub unsafe fn Action(
33524        &self,
33525        value: *mut COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33526    ) -> windows_core::Result<()> {
33527        unsafe {
33528            (windows_core::Interface::vtable(self).Action)(
33529                windows_core::Interface::as_raw(self),
33530                value as _,
33531            )
33532            .ok()
33533        }
33534    }
33535    pub unsafe fn SetAction(
33536        &self,
33537        value: COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33538    ) -> windows_core::Result<()> {
33539        unsafe {
33540            (windows_core::Interface::vtable(self).SetAction)(
33541                windows_core::Interface::as_raw(self),
33542                value,
33543            )
33544            .ok()
33545        }
33546    }
33547    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
33548        unsafe {
33549            let mut result__ = core::mem::zeroed();
33550            (windows_core::Interface::vtable(self).GetDeferral)(
33551                windows_core::Interface::as_raw(self),
33552                &mut result__,
33553            )
33554            .and_then(|| windows_core::Type::from_abi(result__))
33555        }
33556    }
33557}
33558#[repr(C)]
33559#[doc(hidden)]
33560pub struct ICoreWebView2ServerCertificateErrorDetectedEventArgs_Vtbl {
33561    pub base__: windows_core::IUnknown_Vtbl,
33562    pub ErrorStatus: unsafe extern "system" fn(
33563        *mut core::ffi::c_void,
33564        *mut COREWEBVIEW2_WEB_ERROR_STATUS,
33565    ) -> windows_core::HRESULT,
33566    pub RequestUri: unsafe extern "system" fn(
33567        *mut core::ffi::c_void,
33568        *mut windows_core::PWSTR,
33569    ) -> windows_core::HRESULT,
33570    pub ServerCertificate: unsafe extern "system" fn(
33571        *mut core::ffi::c_void,
33572        *mut *mut core::ffi::c_void,
33573    ) -> windows_core::HRESULT,
33574    pub Action: unsafe extern "system" fn(
33575        *mut core::ffi::c_void,
33576        *mut COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33577    ) -> windows_core::HRESULT,
33578    pub SetAction: unsafe extern "system" fn(
33579        *mut core::ffi::c_void,
33580        COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33581    ) -> windows_core::HRESULT,
33582    pub GetDeferral: unsafe extern "system" fn(
33583        *mut core::ffi::c_void,
33584        *mut *mut core::ffi::c_void,
33585    ) -> windows_core::HRESULT,
33586}
33587pub trait ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl:
33588    windows_core::IUnknownImpl
33589{
33590    fn ErrorStatus(&self, value: *mut COREWEBVIEW2_WEB_ERROR_STATUS) -> windows_core::Result<()>;
33591    fn RequestUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
33592    fn ServerCertificate(&self) -> windows_core::Result<ICoreWebView2Certificate>;
33593    fn Action(
33594        &self,
33595        value: *mut COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33596    ) -> windows_core::Result<()>;
33597    fn SetAction(
33598        &self,
33599        value: COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33600    ) -> windows_core::Result<()>;
33601    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
33602}
33603impl ICoreWebView2ServerCertificateErrorDetectedEventArgs_Vtbl {
33604    pub const fn new<
33605        Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33606        const OFFSET: isize,
33607    >() -> Self {
33608        unsafe extern "system" fn ErrorStatus<
33609            Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33610            const OFFSET: isize,
33611        >(
33612            this: *mut core::ffi::c_void,
33613            value: *mut COREWEBVIEW2_WEB_ERROR_STATUS,
33614        ) -> windows_core::HRESULT {
33615            unsafe {
33616                let this: &Identity =
33617                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33618                ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl::ErrorStatus(
33619                    this,
33620                    core::mem::transmute_copy(&value),
33621                )
33622                .into()
33623            }
33624        }
33625        unsafe extern "system" fn RequestUri<
33626            Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33627            const OFFSET: isize,
33628        >(
33629            this: *mut core::ffi::c_void,
33630            value: *mut windows_core::PWSTR,
33631        ) -> windows_core::HRESULT {
33632            unsafe {
33633                let this: &Identity =
33634                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33635                ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl::RequestUri(
33636                    this,
33637                    core::mem::transmute_copy(&value),
33638                )
33639                .into()
33640            }
33641        }
33642        unsafe extern "system" fn ServerCertificate<
33643            Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33644            const OFFSET: isize,
33645        >(
33646            this: *mut core::ffi::c_void,
33647            value: *mut *mut core::ffi::c_void,
33648        ) -> windows_core::HRESULT {
33649            unsafe {
33650                let this: &Identity =
33651                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33652                match ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl::ServerCertificate(
33653                    this,
33654                ) {
33655                    Ok(ok__) => {
33656                        value.write(core::mem::transmute(ok__));
33657                        windows_core::HRESULT(0)
33658                    }
33659                    Err(err) => err.into(),
33660                }
33661            }
33662        }
33663        unsafe extern "system" fn Action<
33664            Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33665            const OFFSET: isize,
33666        >(
33667            this: *mut core::ffi::c_void,
33668            value: *mut COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33669        ) -> windows_core::HRESULT {
33670            unsafe {
33671                let this: &Identity =
33672                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33673                ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl::Action(
33674                    this,
33675                    core::mem::transmute_copy(&value),
33676                )
33677                .into()
33678            }
33679        }
33680        unsafe extern "system" fn SetAction<
33681            Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33682            const OFFSET: isize,
33683        >(
33684            this: *mut core::ffi::c_void,
33685            value: COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION,
33686        ) -> windows_core::HRESULT {
33687            unsafe {
33688                let this: &Identity =
33689                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33690                ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl::SetAction(
33691                    this,
33692                    core::mem::transmute_copy(&value),
33693                )
33694                .into()
33695            }
33696        }
33697        unsafe extern "system" fn GetDeferral<
33698            Identity: ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl,
33699            const OFFSET: isize,
33700        >(
33701            this: *mut core::ffi::c_void,
33702            deferral: *mut *mut core::ffi::c_void,
33703        ) -> windows_core::HRESULT {
33704            unsafe {
33705                let this: &Identity =
33706                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33707                match ICoreWebView2ServerCertificateErrorDetectedEventArgs_Impl::GetDeferral(this) {
33708                    Ok(ok__) => {
33709                        deferral.write(core::mem::transmute(ok__));
33710                        windows_core::HRESULT(0)
33711                    }
33712                    Err(err) => err.into(),
33713                }
33714            }
33715        }
33716        Self {
33717            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33718            ErrorStatus: ErrorStatus::<Identity, OFFSET>,
33719            RequestUri: RequestUri::<Identity, OFFSET>,
33720            ServerCertificate: ServerCertificate::<Identity, OFFSET>,
33721            Action: Action::<Identity, OFFSET>,
33722            SetAction: SetAction::<Identity, OFFSET>,
33723            GetDeferral: GetDeferral::<Identity, OFFSET>,
33724        }
33725    }
33726    pub fn matches(iid: &windows_core::GUID) -> bool {
33727        iid == & < ICoreWebView2ServerCertificateErrorDetectedEventArgs as windows_core::Interface >::IID
33728    }
33729}
33730impl windows_core::RuntimeName for ICoreWebView2ServerCertificateErrorDetectedEventArgs {}
33731windows_core::imp::define_interface!(
33732    ICoreWebView2ServerCertificateErrorDetectedEventHandler,
33733    ICoreWebView2ServerCertificateErrorDetectedEventHandler_Vtbl,
33734    0x969b3a26_d85e_4795_8199_fef57344da22
33735);
33736windows_core::imp::interface_hierarchy!(
33737    ICoreWebView2ServerCertificateErrorDetectedEventHandler,
33738    windows_core::IUnknown
33739);
33740impl ICoreWebView2ServerCertificateErrorDetectedEventHandler {
33741    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
33742    where
33743        P0: windows_core::Param<ICoreWebView2>,
33744        P1: windows_core::Param<ICoreWebView2ServerCertificateErrorDetectedEventArgs>,
33745    {
33746        unsafe {
33747            (windows_core::Interface::vtable(self).Invoke)(
33748                windows_core::Interface::as_raw(self),
33749                sender.param().abi(),
33750                args.param().abi(),
33751            )
33752            .ok()
33753        }
33754    }
33755}
33756#[repr(C)]
33757#[doc(hidden)]
33758pub struct ICoreWebView2ServerCertificateErrorDetectedEventHandler_Vtbl {
33759    pub base__: windows_core::IUnknown_Vtbl,
33760    pub Invoke: unsafe extern "system" fn(
33761        *mut core::ffi::c_void,
33762        *mut core::ffi::c_void,
33763        *mut core::ffi::c_void,
33764    ) -> windows_core::HRESULT,
33765}
33766pub trait ICoreWebView2ServerCertificateErrorDetectedEventHandler_Impl:
33767    windows_core::IUnknownImpl
33768{
33769    fn Invoke(
33770        &self,
33771        sender: windows_core::Ref<'_, ICoreWebView2>,
33772        args: windows_core::Ref<'_, ICoreWebView2ServerCertificateErrorDetectedEventArgs>,
33773    ) -> windows_core::Result<()>;
33774}
33775impl ICoreWebView2ServerCertificateErrorDetectedEventHandler_Vtbl {
33776    pub const fn new<
33777        Identity: ICoreWebView2ServerCertificateErrorDetectedEventHandler_Impl,
33778        const OFFSET: isize,
33779    >() -> Self {
33780        unsafe extern "system" fn Invoke<
33781            Identity: ICoreWebView2ServerCertificateErrorDetectedEventHandler_Impl,
33782            const OFFSET: isize,
33783        >(
33784            this: *mut core::ffi::c_void,
33785            sender: *mut core::ffi::c_void,
33786            args: *mut core::ffi::c_void,
33787        ) -> windows_core::HRESULT {
33788            unsafe {
33789                let this: &Identity =
33790                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33791                ICoreWebView2ServerCertificateErrorDetectedEventHandler_Impl::Invoke(
33792                    this,
33793                    core::mem::transmute_copy(&sender),
33794                    core::mem::transmute_copy(&args),
33795                )
33796                .into()
33797            }
33798        }
33799        Self {
33800            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33801            Invoke: Invoke::<Identity, OFFSET>,
33802        }
33803    }
33804    pub fn matches(iid: &windows_core::GUID) -> bool {
33805        iid == & < ICoreWebView2ServerCertificateErrorDetectedEventHandler as windows_core::Interface >::IID
33806    }
33807}
33808impl windows_core::RuntimeName for ICoreWebView2ServerCertificateErrorDetectedEventHandler {}
33809windows_core::imp::define_interface!(
33810    ICoreWebView2SetPermissionStateCompletedHandler,
33811    ICoreWebView2SetPermissionStateCompletedHandler_Vtbl,
33812    0xfc77fb30_9c9e_4076_b8c7_7644a703ca1b
33813);
33814windows_core::imp::interface_hierarchy!(
33815    ICoreWebView2SetPermissionStateCompletedHandler,
33816    windows_core::IUnknown
33817);
33818impl ICoreWebView2SetPermissionStateCompletedHandler {
33819    pub unsafe fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()> {
33820        unsafe {
33821            (windows_core::Interface::vtable(self).Invoke)(
33822                windows_core::Interface::as_raw(self),
33823                errorcode,
33824            )
33825            .ok()
33826        }
33827    }
33828}
33829#[repr(C)]
33830#[doc(hidden)]
33831pub struct ICoreWebView2SetPermissionStateCompletedHandler_Vtbl {
33832    pub base__: windows_core::IUnknown_Vtbl,
33833    pub Invoke: unsafe extern "system" fn(
33834        *mut core::ffi::c_void,
33835        windows_core::HRESULT,
33836    ) -> windows_core::HRESULT,
33837}
33838pub trait ICoreWebView2SetPermissionStateCompletedHandler_Impl: windows_core::IUnknownImpl {
33839    fn Invoke(&self, errorcode: windows_core::HRESULT) -> windows_core::Result<()>;
33840}
33841impl ICoreWebView2SetPermissionStateCompletedHandler_Vtbl {
33842    pub const fn new<
33843        Identity: ICoreWebView2SetPermissionStateCompletedHandler_Impl,
33844        const OFFSET: isize,
33845    >() -> Self {
33846        unsafe extern "system" fn Invoke<
33847            Identity: ICoreWebView2SetPermissionStateCompletedHandler_Impl,
33848            const OFFSET: isize,
33849        >(
33850            this: *mut core::ffi::c_void,
33851            errorcode: windows_core::HRESULT,
33852        ) -> windows_core::HRESULT {
33853            unsafe {
33854                let this: &Identity =
33855                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33856                ICoreWebView2SetPermissionStateCompletedHandler_Impl::Invoke(
33857                    this,
33858                    core::mem::transmute_copy(&errorcode),
33859                )
33860                .into()
33861            }
33862        }
33863        Self {
33864            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33865            Invoke: Invoke::<Identity, OFFSET>,
33866        }
33867    }
33868    pub fn matches(iid: &windows_core::GUID) -> bool {
33869        iid == &<ICoreWebView2SetPermissionStateCompletedHandler as windows_core::Interface>::IID
33870    }
33871}
33872impl windows_core::RuntimeName for ICoreWebView2SetPermissionStateCompletedHandler {}
33873windows_core::imp::define_interface!(
33874    ICoreWebView2Settings,
33875    ICoreWebView2Settings_Vtbl,
33876    0xe562e4f0_d7fa_43ac_8d71_c05150499f00
33877);
33878windows_core::imp::interface_hierarchy!(ICoreWebView2Settings, windows_core::IUnknown);
33879impl ICoreWebView2Settings {
33880    pub unsafe fn IsScriptEnabled(
33881        &self,
33882        isscriptenabled: *mut windows_core::BOOL,
33883    ) -> windows_core::Result<()> {
33884        unsafe {
33885            (windows_core::Interface::vtable(self).IsScriptEnabled)(
33886                windows_core::Interface::as_raw(self),
33887                isscriptenabled as _,
33888            )
33889            .ok()
33890        }
33891    }
33892    pub unsafe fn SetIsScriptEnabled(&self, isscriptenabled: bool) -> windows_core::Result<()> {
33893        unsafe {
33894            (windows_core::Interface::vtable(self).SetIsScriptEnabled)(
33895                windows_core::Interface::as_raw(self),
33896                isscriptenabled.into(),
33897            )
33898            .ok()
33899        }
33900    }
33901    pub unsafe fn IsWebMessageEnabled(
33902        &self,
33903        iswebmessageenabled: *mut windows_core::BOOL,
33904    ) -> windows_core::Result<()> {
33905        unsafe {
33906            (windows_core::Interface::vtable(self).IsWebMessageEnabled)(
33907                windows_core::Interface::as_raw(self),
33908                iswebmessageenabled as _,
33909            )
33910            .ok()
33911        }
33912    }
33913    pub unsafe fn SetIsWebMessageEnabled(
33914        &self,
33915        iswebmessageenabled: bool,
33916    ) -> windows_core::Result<()> {
33917        unsafe {
33918            (windows_core::Interface::vtable(self).SetIsWebMessageEnabled)(
33919                windows_core::Interface::as_raw(self),
33920                iswebmessageenabled.into(),
33921            )
33922            .ok()
33923        }
33924    }
33925    pub unsafe fn AreDefaultScriptDialogsEnabled(
33926        &self,
33927        aredefaultscriptdialogsenabled: *mut windows_core::BOOL,
33928    ) -> windows_core::Result<()> {
33929        unsafe {
33930            (windows_core::Interface::vtable(self).AreDefaultScriptDialogsEnabled)(
33931                windows_core::Interface::as_raw(self),
33932                aredefaultscriptdialogsenabled as _,
33933            )
33934            .ok()
33935        }
33936    }
33937    pub unsafe fn SetAreDefaultScriptDialogsEnabled(
33938        &self,
33939        aredefaultscriptdialogsenabled: bool,
33940    ) -> windows_core::Result<()> {
33941        unsafe {
33942            (windows_core::Interface::vtable(self).SetAreDefaultScriptDialogsEnabled)(
33943                windows_core::Interface::as_raw(self),
33944                aredefaultscriptdialogsenabled.into(),
33945            )
33946            .ok()
33947        }
33948    }
33949    pub unsafe fn IsStatusBarEnabled(
33950        &self,
33951        isstatusbarenabled: *mut windows_core::BOOL,
33952    ) -> windows_core::Result<()> {
33953        unsafe {
33954            (windows_core::Interface::vtable(self).IsStatusBarEnabled)(
33955                windows_core::Interface::as_raw(self),
33956                isstatusbarenabled as _,
33957            )
33958            .ok()
33959        }
33960    }
33961    pub unsafe fn SetIsStatusBarEnabled(
33962        &self,
33963        isstatusbarenabled: bool,
33964    ) -> windows_core::Result<()> {
33965        unsafe {
33966            (windows_core::Interface::vtable(self).SetIsStatusBarEnabled)(
33967                windows_core::Interface::as_raw(self),
33968                isstatusbarenabled.into(),
33969            )
33970            .ok()
33971        }
33972    }
33973    pub unsafe fn AreDevToolsEnabled(
33974        &self,
33975        aredevtoolsenabled: *mut windows_core::BOOL,
33976    ) -> windows_core::Result<()> {
33977        unsafe {
33978            (windows_core::Interface::vtable(self).AreDevToolsEnabled)(
33979                windows_core::Interface::as_raw(self),
33980                aredevtoolsenabled as _,
33981            )
33982            .ok()
33983        }
33984    }
33985    pub unsafe fn SetAreDevToolsEnabled(
33986        &self,
33987        aredevtoolsenabled: bool,
33988    ) -> windows_core::Result<()> {
33989        unsafe {
33990            (windows_core::Interface::vtable(self).SetAreDevToolsEnabled)(
33991                windows_core::Interface::as_raw(self),
33992                aredevtoolsenabled.into(),
33993            )
33994            .ok()
33995        }
33996    }
33997    pub unsafe fn AreDefaultContextMenusEnabled(
33998        &self,
33999        enabled: *mut windows_core::BOOL,
34000    ) -> windows_core::Result<()> {
34001        unsafe {
34002            (windows_core::Interface::vtable(self).AreDefaultContextMenusEnabled)(
34003                windows_core::Interface::as_raw(self),
34004                enabled as _,
34005            )
34006            .ok()
34007        }
34008    }
34009    pub unsafe fn SetAreDefaultContextMenusEnabled(
34010        &self,
34011        enabled: bool,
34012    ) -> windows_core::Result<()> {
34013        unsafe {
34014            (windows_core::Interface::vtable(self).SetAreDefaultContextMenusEnabled)(
34015                windows_core::Interface::as_raw(self),
34016                enabled.into(),
34017            )
34018            .ok()
34019        }
34020    }
34021    pub unsafe fn AreHostObjectsAllowed(
34022        &self,
34023        allowed: *mut windows_core::BOOL,
34024    ) -> windows_core::Result<()> {
34025        unsafe {
34026            (windows_core::Interface::vtable(self).AreHostObjectsAllowed)(
34027                windows_core::Interface::as_raw(self),
34028                allowed as _,
34029            )
34030            .ok()
34031        }
34032    }
34033    pub unsafe fn SetAreHostObjectsAllowed(&self, allowed: bool) -> windows_core::Result<()> {
34034        unsafe {
34035            (windows_core::Interface::vtable(self).SetAreHostObjectsAllowed)(
34036                windows_core::Interface::as_raw(self),
34037                allowed.into(),
34038            )
34039            .ok()
34040        }
34041    }
34042    pub unsafe fn IsZoomControlEnabled(
34043        &self,
34044        enabled: *mut windows_core::BOOL,
34045    ) -> windows_core::Result<()> {
34046        unsafe {
34047            (windows_core::Interface::vtable(self).IsZoomControlEnabled)(
34048                windows_core::Interface::as_raw(self),
34049                enabled as _,
34050            )
34051            .ok()
34052        }
34053    }
34054    pub unsafe fn SetIsZoomControlEnabled(&self, enabled: bool) -> windows_core::Result<()> {
34055        unsafe {
34056            (windows_core::Interface::vtable(self).SetIsZoomControlEnabled)(
34057                windows_core::Interface::as_raw(self),
34058                enabled.into(),
34059            )
34060            .ok()
34061        }
34062    }
34063    pub unsafe fn IsBuiltInErrorPageEnabled(
34064        &self,
34065        enabled: *mut windows_core::BOOL,
34066    ) -> windows_core::Result<()> {
34067        unsafe {
34068            (windows_core::Interface::vtable(self).IsBuiltInErrorPageEnabled)(
34069                windows_core::Interface::as_raw(self),
34070                enabled as _,
34071            )
34072            .ok()
34073        }
34074    }
34075    pub unsafe fn SetIsBuiltInErrorPageEnabled(&self, enabled: bool) -> windows_core::Result<()> {
34076        unsafe {
34077            (windows_core::Interface::vtable(self).SetIsBuiltInErrorPageEnabled)(
34078                windows_core::Interface::as_raw(self),
34079                enabled.into(),
34080            )
34081            .ok()
34082        }
34083    }
34084}
34085#[repr(C)]
34086#[doc(hidden)]
34087pub struct ICoreWebView2Settings_Vtbl {
34088    pub base__: windows_core::IUnknown_Vtbl,
34089    pub IsScriptEnabled: unsafe extern "system" fn(
34090        *mut core::ffi::c_void,
34091        *mut windows_core::BOOL,
34092    ) -> windows_core::HRESULT,
34093    pub SetIsScriptEnabled: unsafe extern "system" fn(
34094        *mut core::ffi::c_void,
34095        windows_core::BOOL,
34096    ) -> windows_core::HRESULT,
34097    pub IsWebMessageEnabled: unsafe extern "system" fn(
34098        *mut core::ffi::c_void,
34099        *mut windows_core::BOOL,
34100    ) -> windows_core::HRESULT,
34101    pub SetIsWebMessageEnabled: unsafe extern "system" fn(
34102        *mut core::ffi::c_void,
34103        windows_core::BOOL,
34104    ) -> windows_core::HRESULT,
34105    pub AreDefaultScriptDialogsEnabled: unsafe extern "system" fn(
34106        *mut core::ffi::c_void,
34107        *mut windows_core::BOOL,
34108    ) -> windows_core::HRESULT,
34109    pub SetAreDefaultScriptDialogsEnabled: unsafe extern "system" fn(
34110        *mut core::ffi::c_void,
34111        windows_core::BOOL,
34112    ) -> windows_core::HRESULT,
34113    pub IsStatusBarEnabled: unsafe extern "system" fn(
34114        *mut core::ffi::c_void,
34115        *mut windows_core::BOOL,
34116    ) -> windows_core::HRESULT,
34117    pub SetIsStatusBarEnabled: unsafe extern "system" fn(
34118        *mut core::ffi::c_void,
34119        windows_core::BOOL,
34120    ) -> windows_core::HRESULT,
34121    pub AreDevToolsEnabled: unsafe extern "system" fn(
34122        *mut core::ffi::c_void,
34123        *mut windows_core::BOOL,
34124    ) -> windows_core::HRESULT,
34125    pub SetAreDevToolsEnabled: unsafe extern "system" fn(
34126        *mut core::ffi::c_void,
34127        windows_core::BOOL,
34128    ) -> windows_core::HRESULT,
34129    pub AreDefaultContextMenusEnabled: unsafe extern "system" fn(
34130        *mut core::ffi::c_void,
34131        *mut windows_core::BOOL,
34132    ) -> windows_core::HRESULT,
34133    pub SetAreDefaultContextMenusEnabled: unsafe extern "system" fn(
34134        *mut core::ffi::c_void,
34135        windows_core::BOOL,
34136    ) -> windows_core::HRESULT,
34137    pub AreHostObjectsAllowed: unsafe extern "system" fn(
34138        *mut core::ffi::c_void,
34139        *mut windows_core::BOOL,
34140    ) -> windows_core::HRESULT,
34141    pub SetAreHostObjectsAllowed: unsafe extern "system" fn(
34142        *mut core::ffi::c_void,
34143        windows_core::BOOL,
34144    ) -> windows_core::HRESULT,
34145    pub IsZoomControlEnabled: unsafe extern "system" fn(
34146        *mut core::ffi::c_void,
34147        *mut windows_core::BOOL,
34148    ) -> windows_core::HRESULT,
34149    pub SetIsZoomControlEnabled: unsafe extern "system" fn(
34150        *mut core::ffi::c_void,
34151        windows_core::BOOL,
34152    ) -> windows_core::HRESULT,
34153    pub IsBuiltInErrorPageEnabled: unsafe extern "system" fn(
34154        *mut core::ffi::c_void,
34155        *mut windows_core::BOOL,
34156    ) -> windows_core::HRESULT,
34157    pub SetIsBuiltInErrorPageEnabled: unsafe extern "system" fn(
34158        *mut core::ffi::c_void,
34159        windows_core::BOOL,
34160    ) -> windows_core::HRESULT,
34161}
34162pub trait ICoreWebView2Settings_Impl: windows_core::IUnknownImpl {
34163    fn IsScriptEnabled(&self, isscriptenabled: *mut windows_core::BOOL)
34164        -> windows_core::Result<()>;
34165    fn SetIsScriptEnabled(&self, isscriptenabled: windows_core::BOOL) -> windows_core::Result<()>;
34166    fn IsWebMessageEnabled(
34167        &self,
34168        iswebmessageenabled: *mut windows_core::BOOL,
34169    ) -> windows_core::Result<()>;
34170    fn SetIsWebMessageEnabled(
34171        &self,
34172        iswebmessageenabled: windows_core::BOOL,
34173    ) -> windows_core::Result<()>;
34174    fn AreDefaultScriptDialogsEnabled(
34175        &self,
34176        aredefaultscriptdialogsenabled: *mut windows_core::BOOL,
34177    ) -> windows_core::Result<()>;
34178    fn SetAreDefaultScriptDialogsEnabled(
34179        &self,
34180        aredefaultscriptdialogsenabled: windows_core::BOOL,
34181    ) -> windows_core::Result<()>;
34182    fn IsStatusBarEnabled(
34183        &self,
34184        isstatusbarenabled: *mut windows_core::BOOL,
34185    ) -> windows_core::Result<()>;
34186    fn SetIsStatusBarEnabled(
34187        &self,
34188        isstatusbarenabled: windows_core::BOOL,
34189    ) -> windows_core::Result<()>;
34190    fn AreDevToolsEnabled(
34191        &self,
34192        aredevtoolsenabled: *mut windows_core::BOOL,
34193    ) -> windows_core::Result<()>;
34194    fn SetAreDevToolsEnabled(
34195        &self,
34196        aredevtoolsenabled: windows_core::BOOL,
34197    ) -> windows_core::Result<()>;
34198    fn AreDefaultContextMenusEnabled(
34199        &self,
34200        enabled: *mut windows_core::BOOL,
34201    ) -> windows_core::Result<()>;
34202    fn SetAreDefaultContextMenusEnabled(
34203        &self,
34204        enabled: windows_core::BOOL,
34205    ) -> windows_core::Result<()>;
34206    fn AreHostObjectsAllowed(&self, allowed: *mut windows_core::BOOL) -> windows_core::Result<()>;
34207    fn SetAreHostObjectsAllowed(&self, allowed: windows_core::BOOL) -> windows_core::Result<()>;
34208    fn IsZoomControlEnabled(&self, enabled: *mut windows_core::BOOL) -> windows_core::Result<()>;
34209    fn SetIsZoomControlEnabled(&self, enabled: windows_core::BOOL) -> windows_core::Result<()>;
34210    fn IsBuiltInErrorPageEnabled(
34211        &self,
34212        enabled: *mut windows_core::BOOL,
34213    ) -> windows_core::Result<()>;
34214    fn SetIsBuiltInErrorPageEnabled(&self, enabled: windows_core::BOOL)
34215        -> windows_core::Result<()>;
34216}
34217impl ICoreWebView2Settings_Vtbl {
34218    pub const fn new<Identity: ICoreWebView2Settings_Impl, const OFFSET: isize>() -> Self {
34219        unsafe extern "system" fn IsScriptEnabled<
34220            Identity: ICoreWebView2Settings_Impl,
34221            const OFFSET: isize,
34222        >(
34223            this: *mut core::ffi::c_void,
34224            isscriptenabled: *mut windows_core::BOOL,
34225        ) -> windows_core::HRESULT {
34226            unsafe {
34227                let this: &Identity =
34228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34229                ICoreWebView2Settings_Impl::IsScriptEnabled(
34230                    this,
34231                    core::mem::transmute_copy(&isscriptenabled),
34232                )
34233                .into()
34234            }
34235        }
34236        unsafe extern "system" fn SetIsScriptEnabled<
34237            Identity: ICoreWebView2Settings_Impl,
34238            const OFFSET: isize,
34239        >(
34240            this: *mut core::ffi::c_void,
34241            isscriptenabled: windows_core::BOOL,
34242        ) -> windows_core::HRESULT {
34243            unsafe {
34244                let this: &Identity =
34245                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34246                ICoreWebView2Settings_Impl::SetIsScriptEnabled(
34247                    this,
34248                    core::mem::transmute_copy(&isscriptenabled),
34249                )
34250                .into()
34251            }
34252        }
34253        unsafe extern "system" fn IsWebMessageEnabled<
34254            Identity: ICoreWebView2Settings_Impl,
34255            const OFFSET: isize,
34256        >(
34257            this: *mut core::ffi::c_void,
34258            iswebmessageenabled: *mut windows_core::BOOL,
34259        ) -> windows_core::HRESULT {
34260            unsafe {
34261                let this: &Identity =
34262                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34263                ICoreWebView2Settings_Impl::IsWebMessageEnabled(
34264                    this,
34265                    core::mem::transmute_copy(&iswebmessageenabled),
34266                )
34267                .into()
34268            }
34269        }
34270        unsafe extern "system" fn SetIsWebMessageEnabled<
34271            Identity: ICoreWebView2Settings_Impl,
34272            const OFFSET: isize,
34273        >(
34274            this: *mut core::ffi::c_void,
34275            iswebmessageenabled: windows_core::BOOL,
34276        ) -> windows_core::HRESULT {
34277            unsafe {
34278                let this: &Identity =
34279                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34280                ICoreWebView2Settings_Impl::SetIsWebMessageEnabled(
34281                    this,
34282                    core::mem::transmute_copy(&iswebmessageenabled),
34283                )
34284                .into()
34285            }
34286        }
34287        unsafe extern "system" fn AreDefaultScriptDialogsEnabled<
34288            Identity: ICoreWebView2Settings_Impl,
34289            const OFFSET: isize,
34290        >(
34291            this: *mut core::ffi::c_void,
34292            aredefaultscriptdialogsenabled: *mut windows_core::BOOL,
34293        ) -> windows_core::HRESULT {
34294            unsafe {
34295                let this: &Identity =
34296                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34297                ICoreWebView2Settings_Impl::AreDefaultScriptDialogsEnabled(
34298                    this,
34299                    core::mem::transmute_copy(&aredefaultscriptdialogsenabled),
34300                )
34301                .into()
34302            }
34303        }
34304        unsafe extern "system" fn SetAreDefaultScriptDialogsEnabled<
34305            Identity: ICoreWebView2Settings_Impl,
34306            const OFFSET: isize,
34307        >(
34308            this: *mut core::ffi::c_void,
34309            aredefaultscriptdialogsenabled: windows_core::BOOL,
34310        ) -> windows_core::HRESULT {
34311            unsafe {
34312                let this: &Identity =
34313                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34314                ICoreWebView2Settings_Impl::SetAreDefaultScriptDialogsEnabled(
34315                    this,
34316                    core::mem::transmute_copy(&aredefaultscriptdialogsenabled),
34317                )
34318                .into()
34319            }
34320        }
34321        unsafe extern "system" fn IsStatusBarEnabled<
34322            Identity: ICoreWebView2Settings_Impl,
34323            const OFFSET: isize,
34324        >(
34325            this: *mut core::ffi::c_void,
34326            isstatusbarenabled: *mut windows_core::BOOL,
34327        ) -> windows_core::HRESULT {
34328            unsafe {
34329                let this: &Identity =
34330                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34331                ICoreWebView2Settings_Impl::IsStatusBarEnabled(
34332                    this,
34333                    core::mem::transmute_copy(&isstatusbarenabled),
34334                )
34335                .into()
34336            }
34337        }
34338        unsafe extern "system" fn SetIsStatusBarEnabled<
34339            Identity: ICoreWebView2Settings_Impl,
34340            const OFFSET: isize,
34341        >(
34342            this: *mut core::ffi::c_void,
34343            isstatusbarenabled: windows_core::BOOL,
34344        ) -> windows_core::HRESULT {
34345            unsafe {
34346                let this: &Identity =
34347                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34348                ICoreWebView2Settings_Impl::SetIsStatusBarEnabled(
34349                    this,
34350                    core::mem::transmute_copy(&isstatusbarenabled),
34351                )
34352                .into()
34353            }
34354        }
34355        unsafe extern "system" fn AreDevToolsEnabled<
34356            Identity: ICoreWebView2Settings_Impl,
34357            const OFFSET: isize,
34358        >(
34359            this: *mut core::ffi::c_void,
34360            aredevtoolsenabled: *mut windows_core::BOOL,
34361        ) -> windows_core::HRESULT {
34362            unsafe {
34363                let this: &Identity =
34364                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34365                ICoreWebView2Settings_Impl::AreDevToolsEnabled(
34366                    this,
34367                    core::mem::transmute_copy(&aredevtoolsenabled),
34368                )
34369                .into()
34370            }
34371        }
34372        unsafe extern "system" fn SetAreDevToolsEnabled<
34373            Identity: ICoreWebView2Settings_Impl,
34374            const OFFSET: isize,
34375        >(
34376            this: *mut core::ffi::c_void,
34377            aredevtoolsenabled: windows_core::BOOL,
34378        ) -> windows_core::HRESULT {
34379            unsafe {
34380                let this: &Identity =
34381                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34382                ICoreWebView2Settings_Impl::SetAreDevToolsEnabled(
34383                    this,
34384                    core::mem::transmute_copy(&aredevtoolsenabled),
34385                )
34386                .into()
34387            }
34388        }
34389        unsafe extern "system" fn AreDefaultContextMenusEnabled<
34390            Identity: ICoreWebView2Settings_Impl,
34391            const OFFSET: isize,
34392        >(
34393            this: *mut core::ffi::c_void,
34394            enabled: *mut windows_core::BOOL,
34395        ) -> windows_core::HRESULT {
34396            unsafe {
34397                let this: &Identity =
34398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34399                ICoreWebView2Settings_Impl::AreDefaultContextMenusEnabled(
34400                    this,
34401                    core::mem::transmute_copy(&enabled),
34402                )
34403                .into()
34404            }
34405        }
34406        unsafe extern "system" fn SetAreDefaultContextMenusEnabled<
34407            Identity: ICoreWebView2Settings_Impl,
34408            const OFFSET: isize,
34409        >(
34410            this: *mut core::ffi::c_void,
34411            enabled: windows_core::BOOL,
34412        ) -> windows_core::HRESULT {
34413            unsafe {
34414                let this: &Identity =
34415                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34416                ICoreWebView2Settings_Impl::SetAreDefaultContextMenusEnabled(
34417                    this,
34418                    core::mem::transmute_copy(&enabled),
34419                )
34420                .into()
34421            }
34422        }
34423        unsafe extern "system" fn AreHostObjectsAllowed<
34424            Identity: ICoreWebView2Settings_Impl,
34425            const OFFSET: isize,
34426        >(
34427            this: *mut core::ffi::c_void,
34428            allowed: *mut windows_core::BOOL,
34429        ) -> windows_core::HRESULT {
34430            unsafe {
34431                let this: &Identity =
34432                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34433                ICoreWebView2Settings_Impl::AreHostObjectsAllowed(
34434                    this,
34435                    core::mem::transmute_copy(&allowed),
34436                )
34437                .into()
34438            }
34439        }
34440        unsafe extern "system" fn SetAreHostObjectsAllowed<
34441            Identity: ICoreWebView2Settings_Impl,
34442            const OFFSET: isize,
34443        >(
34444            this: *mut core::ffi::c_void,
34445            allowed: windows_core::BOOL,
34446        ) -> windows_core::HRESULT {
34447            unsafe {
34448                let this: &Identity =
34449                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34450                ICoreWebView2Settings_Impl::SetAreHostObjectsAllowed(
34451                    this,
34452                    core::mem::transmute_copy(&allowed),
34453                )
34454                .into()
34455            }
34456        }
34457        unsafe extern "system" fn IsZoomControlEnabled<
34458            Identity: ICoreWebView2Settings_Impl,
34459            const OFFSET: isize,
34460        >(
34461            this: *mut core::ffi::c_void,
34462            enabled: *mut windows_core::BOOL,
34463        ) -> windows_core::HRESULT {
34464            unsafe {
34465                let this: &Identity =
34466                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34467                ICoreWebView2Settings_Impl::IsZoomControlEnabled(
34468                    this,
34469                    core::mem::transmute_copy(&enabled),
34470                )
34471                .into()
34472            }
34473        }
34474        unsafe extern "system" fn SetIsZoomControlEnabled<
34475            Identity: ICoreWebView2Settings_Impl,
34476            const OFFSET: isize,
34477        >(
34478            this: *mut core::ffi::c_void,
34479            enabled: windows_core::BOOL,
34480        ) -> windows_core::HRESULT {
34481            unsafe {
34482                let this: &Identity =
34483                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34484                ICoreWebView2Settings_Impl::SetIsZoomControlEnabled(
34485                    this,
34486                    core::mem::transmute_copy(&enabled),
34487                )
34488                .into()
34489            }
34490        }
34491        unsafe extern "system" fn IsBuiltInErrorPageEnabled<
34492            Identity: ICoreWebView2Settings_Impl,
34493            const OFFSET: isize,
34494        >(
34495            this: *mut core::ffi::c_void,
34496            enabled: *mut windows_core::BOOL,
34497        ) -> windows_core::HRESULT {
34498            unsafe {
34499                let this: &Identity =
34500                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34501                ICoreWebView2Settings_Impl::IsBuiltInErrorPageEnabled(
34502                    this,
34503                    core::mem::transmute_copy(&enabled),
34504                )
34505                .into()
34506            }
34507        }
34508        unsafe extern "system" fn SetIsBuiltInErrorPageEnabled<
34509            Identity: ICoreWebView2Settings_Impl,
34510            const OFFSET: isize,
34511        >(
34512            this: *mut core::ffi::c_void,
34513            enabled: windows_core::BOOL,
34514        ) -> windows_core::HRESULT {
34515            unsafe {
34516                let this: &Identity =
34517                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34518                ICoreWebView2Settings_Impl::SetIsBuiltInErrorPageEnabled(
34519                    this,
34520                    core::mem::transmute_copy(&enabled),
34521                )
34522                .into()
34523            }
34524        }
34525        Self {
34526            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
34527            IsScriptEnabled: IsScriptEnabled::<Identity, OFFSET>,
34528            SetIsScriptEnabled: SetIsScriptEnabled::<Identity, OFFSET>,
34529            IsWebMessageEnabled: IsWebMessageEnabled::<Identity, OFFSET>,
34530            SetIsWebMessageEnabled: SetIsWebMessageEnabled::<Identity, OFFSET>,
34531            AreDefaultScriptDialogsEnabled: AreDefaultScriptDialogsEnabled::<Identity, OFFSET>,
34532            SetAreDefaultScriptDialogsEnabled: SetAreDefaultScriptDialogsEnabled::<Identity, OFFSET>,
34533            IsStatusBarEnabled: IsStatusBarEnabled::<Identity, OFFSET>,
34534            SetIsStatusBarEnabled: SetIsStatusBarEnabled::<Identity, OFFSET>,
34535            AreDevToolsEnabled: AreDevToolsEnabled::<Identity, OFFSET>,
34536            SetAreDevToolsEnabled: SetAreDevToolsEnabled::<Identity, OFFSET>,
34537            AreDefaultContextMenusEnabled: AreDefaultContextMenusEnabled::<Identity, OFFSET>,
34538            SetAreDefaultContextMenusEnabled: SetAreDefaultContextMenusEnabled::<Identity, OFFSET>,
34539            AreHostObjectsAllowed: AreHostObjectsAllowed::<Identity, OFFSET>,
34540            SetAreHostObjectsAllowed: SetAreHostObjectsAllowed::<Identity, OFFSET>,
34541            IsZoomControlEnabled: IsZoomControlEnabled::<Identity, OFFSET>,
34542            SetIsZoomControlEnabled: SetIsZoomControlEnabled::<Identity, OFFSET>,
34543            IsBuiltInErrorPageEnabled: IsBuiltInErrorPageEnabled::<Identity, OFFSET>,
34544            SetIsBuiltInErrorPageEnabled: SetIsBuiltInErrorPageEnabled::<Identity, OFFSET>,
34545        }
34546    }
34547    pub fn matches(iid: &windows_core::GUID) -> bool {
34548        iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
34549    }
34550}
34551impl windows_core::RuntimeName for ICoreWebView2Settings {}
34552windows_core::imp::define_interface!(
34553    ICoreWebView2Settings2,
34554    ICoreWebView2Settings2_Vtbl,
34555    0xee9a0f68_f46c_4e32_ac23_ef8cac224d2a
34556);
34557impl core::ops::Deref for ICoreWebView2Settings2 {
34558    type Target = ICoreWebView2Settings;
34559    fn deref(&self) -> &Self::Target {
34560        unsafe { core::mem::transmute(self) }
34561    }
34562}
34563windows_core::imp::interface_hierarchy!(
34564    ICoreWebView2Settings2,
34565    windows_core::IUnknown,
34566    ICoreWebView2Settings
34567);
34568impl ICoreWebView2Settings2 {
34569    pub unsafe fn UserAgent(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
34570        unsafe {
34571            (windows_core::Interface::vtable(self).UserAgent)(
34572                windows_core::Interface::as_raw(self),
34573                value as _,
34574            )
34575            .ok()
34576        }
34577    }
34578    pub unsafe fn SetUserAgent<P0>(&self, value: P0) -> windows_core::Result<()>
34579    where
34580        P0: windows_core::Param<windows_core::PCWSTR>,
34581    {
34582        unsafe {
34583            (windows_core::Interface::vtable(self).SetUserAgent)(
34584                windows_core::Interface::as_raw(self),
34585                value.param().abi(),
34586            )
34587            .ok()
34588        }
34589    }
34590}
34591#[repr(C)]
34592#[doc(hidden)]
34593pub struct ICoreWebView2Settings2_Vtbl {
34594    pub base__: ICoreWebView2Settings_Vtbl,
34595    pub UserAgent: unsafe extern "system" fn(
34596        *mut core::ffi::c_void,
34597        *mut windows_core::PWSTR,
34598    ) -> windows_core::HRESULT,
34599    pub SetUserAgent: unsafe extern "system" fn(
34600        *mut core::ffi::c_void,
34601        windows_core::PCWSTR,
34602    ) -> windows_core::HRESULT,
34603}
34604pub trait ICoreWebView2Settings2_Impl: ICoreWebView2Settings_Impl {
34605    fn UserAgent(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
34606    fn SetUserAgent(&self, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
34607}
34608impl ICoreWebView2Settings2_Vtbl {
34609    pub const fn new<Identity: ICoreWebView2Settings2_Impl, const OFFSET: isize>() -> Self {
34610        unsafe extern "system" fn UserAgent<
34611            Identity: ICoreWebView2Settings2_Impl,
34612            const OFFSET: isize,
34613        >(
34614            this: *mut core::ffi::c_void,
34615            value: *mut windows_core::PWSTR,
34616        ) -> windows_core::HRESULT {
34617            unsafe {
34618                let this: &Identity =
34619                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34620                ICoreWebView2Settings2_Impl::UserAgent(this, core::mem::transmute_copy(&value))
34621                    .into()
34622            }
34623        }
34624        unsafe extern "system" fn SetUserAgent<
34625            Identity: ICoreWebView2Settings2_Impl,
34626            const OFFSET: isize,
34627        >(
34628            this: *mut core::ffi::c_void,
34629            value: windows_core::PCWSTR,
34630        ) -> windows_core::HRESULT {
34631            unsafe {
34632                let this: &Identity =
34633                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34634                ICoreWebView2Settings2_Impl::SetUserAgent(this, core::mem::transmute(&value)).into()
34635            }
34636        }
34637        Self {
34638            base__: ICoreWebView2Settings_Vtbl::new::<Identity, OFFSET>(),
34639            UserAgent: UserAgent::<Identity, OFFSET>,
34640            SetUserAgent: SetUserAgent::<Identity, OFFSET>,
34641        }
34642    }
34643    pub fn matches(iid: &windows_core::GUID) -> bool {
34644        iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
34645            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
34646    }
34647}
34648impl windows_core::RuntimeName for ICoreWebView2Settings2 {}
34649windows_core::imp::define_interface!(
34650    ICoreWebView2Settings3,
34651    ICoreWebView2Settings3_Vtbl,
34652    0xfdb5ab74_af33_4854_84f0_0a631deb5eba
34653);
34654impl core::ops::Deref for ICoreWebView2Settings3 {
34655    type Target = ICoreWebView2Settings2;
34656    fn deref(&self) -> &Self::Target {
34657        unsafe { core::mem::transmute(self) }
34658    }
34659}
34660windows_core::imp::interface_hierarchy!(
34661    ICoreWebView2Settings3,
34662    windows_core::IUnknown,
34663    ICoreWebView2Settings,
34664    ICoreWebView2Settings2
34665);
34666impl ICoreWebView2Settings3 {
34667    pub unsafe fn AreBrowserAcceleratorKeysEnabled(
34668        &self,
34669        value: *mut windows_core::BOOL,
34670    ) -> windows_core::Result<()> {
34671        unsafe {
34672            (windows_core::Interface::vtable(self).AreBrowserAcceleratorKeysEnabled)(
34673                windows_core::Interface::as_raw(self),
34674                value as _,
34675            )
34676            .ok()
34677        }
34678    }
34679    pub unsafe fn SetAreBrowserAcceleratorKeysEnabled(
34680        &self,
34681        value: bool,
34682    ) -> windows_core::Result<()> {
34683        unsafe {
34684            (windows_core::Interface::vtable(self).SetAreBrowserAcceleratorKeysEnabled)(
34685                windows_core::Interface::as_raw(self),
34686                value.into(),
34687            )
34688            .ok()
34689        }
34690    }
34691}
34692#[repr(C)]
34693#[doc(hidden)]
34694pub struct ICoreWebView2Settings3_Vtbl {
34695    pub base__: ICoreWebView2Settings2_Vtbl,
34696    pub AreBrowserAcceleratorKeysEnabled: unsafe extern "system" fn(
34697        *mut core::ffi::c_void,
34698        *mut windows_core::BOOL,
34699    ) -> windows_core::HRESULT,
34700    pub SetAreBrowserAcceleratorKeysEnabled: unsafe extern "system" fn(
34701        *mut core::ffi::c_void,
34702        windows_core::BOOL,
34703    )
34704        -> windows_core::HRESULT,
34705}
34706pub trait ICoreWebView2Settings3_Impl: ICoreWebView2Settings2_Impl {
34707    fn AreBrowserAcceleratorKeysEnabled(
34708        &self,
34709        value: *mut windows_core::BOOL,
34710    ) -> windows_core::Result<()>;
34711    fn SetAreBrowserAcceleratorKeysEnabled(
34712        &self,
34713        value: windows_core::BOOL,
34714    ) -> windows_core::Result<()>;
34715}
34716impl ICoreWebView2Settings3_Vtbl {
34717    pub const fn new<Identity: ICoreWebView2Settings3_Impl, const OFFSET: isize>() -> Self {
34718        unsafe extern "system" fn AreBrowserAcceleratorKeysEnabled<
34719            Identity: ICoreWebView2Settings3_Impl,
34720            const OFFSET: isize,
34721        >(
34722            this: *mut core::ffi::c_void,
34723            value: *mut windows_core::BOOL,
34724        ) -> windows_core::HRESULT {
34725            unsafe {
34726                let this: &Identity =
34727                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34728                ICoreWebView2Settings3_Impl::AreBrowserAcceleratorKeysEnabled(
34729                    this,
34730                    core::mem::transmute_copy(&value),
34731                )
34732                .into()
34733            }
34734        }
34735        unsafe extern "system" fn SetAreBrowserAcceleratorKeysEnabled<
34736            Identity: ICoreWebView2Settings3_Impl,
34737            const OFFSET: isize,
34738        >(
34739            this: *mut core::ffi::c_void,
34740            value: windows_core::BOOL,
34741        ) -> windows_core::HRESULT {
34742            unsafe {
34743                let this: &Identity =
34744                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34745                ICoreWebView2Settings3_Impl::SetAreBrowserAcceleratorKeysEnabled(
34746                    this,
34747                    core::mem::transmute_copy(&value),
34748                )
34749                .into()
34750            }
34751        }
34752        Self {
34753            base__: ICoreWebView2Settings2_Vtbl::new::<Identity, OFFSET>(),
34754            AreBrowserAcceleratorKeysEnabled: AreBrowserAcceleratorKeysEnabled::<Identity, OFFSET>,
34755            SetAreBrowserAcceleratorKeysEnabled: SetAreBrowserAcceleratorKeysEnabled::<
34756                Identity,
34757                OFFSET,
34758            >,
34759        }
34760    }
34761    pub fn matches(iid: &windows_core::GUID) -> bool {
34762        iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
34763            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
34764            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
34765    }
34766}
34767impl windows_core::RuntimeName for ICoreWebView2Settings3 {}
34768windows_core::imp::define_interface!(
34769    ICoreWebView2Settings4,
34770    ICoreWebView2Settings4_Vtbl,
34771    0xcb56846c_4168_4d53_b04f_03b6d6796ff2
34772);
34773impl core::ops::Deref for ICoreWebView2Settings4 {
34774    type Target = ICoreWebView2Settings3;
34775    fn deref(&self) -> &Self::Target {
34776        unsafe { core::mem::transmute(self) }
34777    }
34778}
34779windows_core::imp::interface_hierarchy!(
34780    ICoreWebView2Settings4,
34781    windows_core::IUnknown,
34782    ICoreWebView2Settings,
34783    ICoreWebView2Settings2,
34784    ICoreWebView2Settings3
34785);
34786impl ICoreWebView2Settings4 {
34787    pub unsafe fn IsPasswordAutosaveEnabled(
34788        &self,
34789        value: *mut windows_core::BOOL,
34790    ) -> windows_core::Result<()> {
34791        unsafe {
34792            (windows_core::Interface::vtable(self).IsPasswordAutosaveEnabled)(
34793                windows_core::Interface::as_raw(self),
34794                value as _,
34795            )
34796            .ok()
34797        }
34798    }
34799    pub unsafe fn SetIsPasswordAutosaveEnabled(&self, value: bool) -> windows_core::Result<()> {
34800        unsafe {
34801            (windows_core::Interface::vtable(self).SetIsPasswordAutosaveEnabled)(
34802                windows_core::Interface::as_raw(self),
34803                value.into(),
34804            )
34805            .ok()
34806        }
34807    }
34808    pub unsafe fn IsGeneralAutofillEnabled(
34809        &self,
34810        value: *mut windows_core::BOOL,
34811    ) -> windows_core::Result<()> {
34812        unsafe {
34813            (windows_core::Interface::vtable(self).IsGeneralAutofillEnabled)(
34814                windows_core::Interface::as_raw(self),
34815                value as _,
34816            )
34817            .ok()
34818        }
34819    }
34820    pub unsafe fn SetIsGeneralAutofillEnabled(&self, value: bool) -> windows_core::Result<()> {
34821        unsafe {
34822            (windows_core::Interface::vtable(self).SetIsGeneralAutofillEnabled)(
34823                windows_core::Interface::as_raw(self),
34824                value.into(),
34825            )
34826            .ok()
34827        }
34828    }
34829}
34830#[repr(C)]
34831#[doc(hidden)]
34832pub struct ICoreWebView2Settings4_Vtbl {
34833    pub base__: ICoreWebView2Settings3_Vtbl,
34834    pub IsPasswordAutosaveEnabled: unsafe extern "system" fn(
34835        *mut core::ffi::c_void,
34836        *mut windows_core::BOOL,
34837    ) -> windows_core::HRESULT,
34838    pub SetIsPasswordAutosaveEnabled: unsafe extern "system" fn(
34839        *mut core::ffi::c_void,
34840        windows_core::BOOL,
34841    ) -> windows_core::HRESULT,
34842    pub IsGeneralAutofillEnabled: unsafe extern "system" fn(
34843        *mut core::ffi::c_void,
34844        *mut windows_core::BOOL,
34845    ) -> windows_core::HRESULT,
34846    pub SetIsGeneralAutofillEnabled: unsafe extern "system" fn(
34847        *mut core::ffi::c_void,
34848        windows_core::BOOL,
34849    ) -> windows_core::HRESULT,
34850}
34851pub trait ICoreWebView2Settings4_Impl: ICoreWebView2Settings3_Impl {
34852    fn IsPasswordAutosaveEnabled(&self, value: *mut windows_core::BOOL)
34853        -> windows_core::Result<()>;
34854    fn SetIsPasswordAutosaveEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
34855    fn IsGeneralAutofillEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
34856    fn SetIsGeneralAutofillEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
34857}
34858impl ICoreWebView2Settings4_Vtbl {
34859    pub const fn new<Identity: ICoreWebView2Settings4_Impl, const OFFSET: isize>() -> Self {
34860        unsafe extern "system" fn IsPasswordAutosaveEnabled<
34861            Identity: ICoreWebView2Settings4_Impl,
34862            const OFFSET: isize,
34863        >(
34864            this: *mut core::ffi::c_void,
34865            value: *mut windows_core::BOOL,
34866        ) -> windows_core::HRESULT {
34867            unsafe {
34868                let this: &Identity =
34869                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34870                ICoreWebView2Settings4_Impl::IsPasswordAutosaveEnabled(
34871                    this,
34872                    core::mem::transmute_copy(&value),
34873                )
34874                .into()
34875            }
34876        }
34877        unsafe extern "system" fn SetIsPasswordAutosaveEnabled<
34878            Identity: ICoreWebView2Settings4_Impl,
34879            const OFFSET: isize,
34880        >(
34881            this: *mut core::ffi::c_void,
34882            value: windows_core::BOOL,
34883        ) -> windows_core::HRESULT {
34884            unsafe {
34885                let this: &Identity =
34886                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34887                ICoreWebView2Settings4_Impl::SetIsPasswordAutosaveEnabled(
34888                    this,
34889                    core::mem::transmute_copy(&value),
34890                )
34891                .into()
34892            }
34893        }
34894        unsafe extern "system" fn IsGeneralAutofillEnabled<
34895            Identity: ICoreWebView2Settings4_Impl,
34896            const OFFSET: isize,
34897        >(
34898            this: *mut core::ffi::c_void,
34899            value: *mut windows_core::BOOL,
34900        ) -> windows_core::HRESULT {
34901            unsafe {
34902                let this: &Identity =
34903                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34904                ICoreWebView2Settings4_Impl::IsGeneralAutofillEnabled(
34905                    this,
34906                    core::mem::transmute_copy(&value),
34907                )
34908                .into()
34909            }
34910        }
34911        unsafe extern "system" fn SetIsGeneralAutofillEnabled<
34912            Identity: ICoreWebView2Settings4_Impl,
34913            const OFFSET: isize,
34914        >(
34915            this: *mut core::ffi::c_void,
34916            value: windows_core::BOOL,
34917        ) -> windows_core::HRESULT {
34918            unsafe {
34919                let this: &Identity =
34920                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34921                ICoreWebView2Settings4_Impl::SetIsGeneralAutofillEnabled(
34922                    this,
34923                    core::mem::transmute_copy(&value),
34924                )
34925                .into()
34926            }
34927        }
34928        Self {
34929            base__: ICoreWebView2Settings3_Vtbl::new::<Identity, OFFSET>(),
34930            IsPasswordAutosaveEnabled: IsPasswordAutosaveEnabled::<Identity, OFFSET>,
34931            SetIsPasswordAutosaveEnabled: SetIsPasswordAutosaveEnabled::<Identity, OFFSET>,
34932            IsGeneralAutofillEnabled: IsGeneralAutofillEnabled::<Identity, OFFSET>,
34933            SetIsGeneralAutofillEnabled: SetIsGeneralAutofillEnabled::<Identity, OFFSET>,
34934        }
34935    }
34936    pub fn matches(iid: &windows_core::GUID) -> bool {
34937        iid == &<ICoreWebView2Settings4 as windows_core::Interface>::IID
34938            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
34939            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
34940            || iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
34941    }
34942}
34943impl windows_core::RuntimeName for ICoreWebView2Settings4 {}
34944windows_core::imp::define_interface!(
34945    ICoreWebView2Settings5,
34946    ICoreWebView2Settings5_Vtbl,
34947    0x183e7052_1d03_43a0_ab99_98e043b66b39
34948);
34949impl core::ops::Deref for ICoreWebView2Settings5 {
34950    type Target = ICoreWebView2Settings4;
34951    fn deref(&self) -> &Self::Target {
34952        unsafe { core::mem::transmute(self) }
34953    }
34954}
34955windows_core::imp::interface_hierarchy!(
34956    ICoreWebView2Settings5,
34957    windows_core::IUnknown,
34958    ICoreWebView2Settings,
34959    ICoreWebView2Settings2,
34960    ICoreWebView2Settings3,
34961    ICoreWebView2Settings4
34962);
34963impl ICoreWebView2Settings5 {
34964    pub unsafe fn IsPinchZoomEnabled(
34965        &self,
34966        value: *mut windows_core::BOOL,
34967    ) -> windows_core::Result<()> {
34968        unsafe {
34969            (windows_core::Interface::vtable(self).IsPinchZoomEnabled)(
34970                windows_core::Interface::as_raw(self),
34971                value as _,
34972            )
34973            .ok()
34974        }
34975    }
34976    pub unsafe fn SetIsPinchZoomEnabled(&self, value: bool) -> windows_core::Result<()> {
34977        unsafe {
34978            (windows_core::Interface::vtable(self).SetIsPinchZoomEnabled)(
34979                windows_core::Interface::as_raw(self),
34980                value.into(),
34981            )
34982            .ok()
34983        }
34984    }
34985}
34986#[repr(C)]
34987#[doc(hidden)]
34988pub struct ICoreWebView2Settings5_Vtbl {
34989    pub base__: ICoreWebView2Settings4_Vtbl,
34990    pub IsPinchZoomEnabled: unsafe extern "system" fn(
34991        *mut core::ffi::c_void,
34992        *mut windows_core::BOOL,
34993    ) -> windows_core::HRESULT,
34994    pub SetIsPinchZoomEnabled: unsafe extern "system" fn(
34995        *mut core::ffi::c_void,
34996        windows_core::BOOL,
34997    ) -> windows_core::HRESULT,
34998}
34999pub trait ICoreWebView2Settings5_Impl: ICoreWebView2Settings4_Impl {
35000    fn IsPinchZoomEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
35001    fn SetIsPinchZoomEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
35002}
35003impl ICoreWebView2Settings5_Vtbl {
35004    pub const fn new<Identity: ICoreWebView2Settings5_Impl, const OFFSET: isize>() -> Self {
35005        unsafe extern "system" fn IsPinchZoomEnabled<
35006            Identity: ICoreWebView2Settings5_Impl,
35007            const OFFSET: isize,
35008        >(
35009            this: *mut core::ffi::c_void,
35010            value: *mut windows_core::BOOL,
35011        ) -> windows_core::HRESULT {
35012            unsafe {
35013                let this: &Identity =
35014                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35015                ICoreWebView2Settings5_Impl::IsPinchZoomEnabled(
35016                    this,
35017                    core::mem::transmute_copy(&value),
35018                )
35019                .into()
35020            }
35021        }
35022        unsafe extern "system" fn SetIsPinchZoomEnabled<
35023            Identity: ICoreWebView2Settings5_Impl,
35024            const OFFSET: isize,
35025        >(
35026            this: *mut core::ffi::c_void,
35027            value: windows_core::BOOL,
35028        ) -> windows_core::HRESULT {
35029            unsafe {
35030                let this: &Identity =
35031                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35032                ICoreWebView2Settings5_Impl::SetIsPinchZoomEnabled(
35033                    this,
35034                    core::mem::transmute_copy(&value),
35035                )
35036                .into()
35037            }
35038        }
35039        Self {
35040            base__: ICoreWebView2Settings4_Vtbl::new::<Identity, OFFSET>(),
35041            IsPinchZoomEnabled: IsPinchZoomEnabled::<Identity, OFFSET>,
35042            SetIsPinchZoomEnabled: SetIsPinchZoomEnabled::<Identity, OFFSET>,
35043        }
35044    }
35045    pub fn matches(iid: &windows_core::GUID) -> bool {
35046        iid == &<ICoreWebView2Settings5 as windows_core::Interface>::IID
35047            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
35048            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
35049            || iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
35050            || iid == &<ICoreWebView2Settings4 as windows_core::Interface>::IID
35051    }
35052}
35053impl windows_core::RuntimeName for ICoreWebView2Settings5 {}
35054windows_core::imp::define_interface!(
35055    ICoreWebView2Settings6,
35056    ICoreWebView2Settings6_Vtbl,
35057    0x11cb3acd_9bc8_43b8_83bf_f40753714f87
35058);
35059impl core::ops::Deref for ICoreWebView2Settings6 {
35060    type Target = ICoreWebView2Settings5;
35061    fn deref(&self) -> &Self::Target {
35062        unsafe { core::mem::transmute(self) }
35063    }
35064}
35065windows_core::imp::interface_hierarchy!(
35066    ICoreWebView2Settings6,
35067    windows_core::IUnknown,
35068    ICoreWebView2Settings,
35069    ICoreWebView2Settings2,
35070    ICoreWebView2Settings3,
35071    ICoreWebView2Settings4,
35072    ICoreWebView2Settings5
35073);
35074impl ICoreWebView2Settings6 {
35075    pub unsafe fn IsSwipeNavigationEnabled(
35076        &self,
35077        value: *mut windows_core::BOOL,
35078    ) -> windows_core::Result<()> {
35079        unsafe {
35080            (windows_core::Interface::vtable(self).IsSwipeNavigationEnabled)(
35081                windows_core::Interface::as_raw(self),
35082                value as _,
35083            )
35084            .ok()
35085        }
35086    }
35087    pub unsafe fn SetIsSwipeNavigationEnabled(&self, value: bool) -> windows_core::Result<()> {
35088        unsafe {
35089            (windows_core::Interface::vtable(self).SetIsSwipeNavigationEnabled)(
35090                windows_core::Interface::as_raw(self),
35091                value.into(),
35092            )
35093            .ok()
35094        }
35095    }
35096}
35097#[repr(C)]
35098#[doc(hidden)]
35099pub struct ICoreWebView2Settings6_Vtbl {
35100    pub base__: ICoreWebView2Settings5_Vtbl,
35101    pub IsSwipeNavigationEnabled: unsafe extern "system" fn(
35102        *mut core::ffi::c_void,
35103        *mut windows_core::BOOL,
35104    ) -> windows_core::HRESULT,
35105    pub SetIsSwipeNavigationEnabled: unsafe extern "system" fn(
35106        *mut core::ffi::c_void,
35107        windows_core::BOOL,
35108    ) -> windows_core::HRESULT,
35109}
35110pub trait ICoreWebView2Settings6_Impl: ICoreWebView2Settings5_Impl {
35111    fn IsSwipeNavigationEnabled(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
35112    fn SetIsSwipeNavigationEnabled(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
35113}
35114impl ICoreWebView2Settings6_Vtbl {
35115    pub const fn new<Identity: ICoreWebView2Settings6_Impl, const OFFSET: isize>() -> Self {
35116        unsafe extern "system" fn IsSwipeNavigationEnabled<
35117            Identity: ICoreWebView2Settings6_Impl,
35118            const OFFSET: isize,
35119        >(
35120            this: *mut core::ffi::c_void,
35121            value: *mut windows_core::BOOL,
35122        ) -> windows_core::HRESULT {
35123            unsafe {
35124                let this: &Identity =
35125                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35126                ICoreWebView2Settings6_Impl::IsSwipeNavigationEnabled(
35127                    this,
35128                    core::mem::transmute_copy(&value),
35129                )
35130                .into()
35131            }
35132        }
35133        unsafe extern "system" fn SetIsSwipeNavigationEnabled<
35134            Identity: ICoreWebView2Settings6_Impl,
35135            const OFFSET: isize,
35136        >(
35137            this: *mut core::ffi::c_void,
35138            value: windows_core::BOOL,
35139        ) -> windows_core::HRESULT {
35140            unsafe {
35141                let this: &Identity =
35142                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35143                ICoreWebView2Settings6_Impl::SetIsSwipeNavigationEnabled(
35144                    this,
35145                    core::mem::transmute_copy(&value),
35146                )
35147                .into()
35148            }
35149        }
35150        Self {
35151            base__: ICoreWebView2Settings5_Vtbl::new::<Identity, OFFSET>(),
35152            IsSwipeNavigationEnabled: IsSwipeNavigationEnabled::<Identity, OFFSET>,
35153            SetIsSwipeNavigationEnabled: SetIsSwipeNavigationEnabled::<Identity, OFFSET>,
35154        }
35155    }
35156    pub fn matches(iid: &windows_core::GUID) -> bool {
35157        iid == &<ICoreWebView2Settings6 as windows_core::Interface>::IID
35158            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
35159            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
35160            || iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
35161            || iid == &<ICoreWebView2Settings4 as windows_core::Interface>::IID
35162            || iid == &<ICoreWebView2Settings5 as windows_core::Interface>::IID
35163    }
35164}
35165impl windows_core::RuntimeName for ICoreWebView2Settings6 {}
35166windows_core::imp::define_interface!(
35167    ICoreWebView2Settings7,
35168    ICoreWebView2Settings7_Vtbl,
35169    0x488dc902_35ef_42d2_bc7d_94b65c4bc49c
35170);
35171impl core::ops::Deref for ICoreWebView2Settings7 {
35172    type Target = ICoreWebView2Settings6;
35173    fn deref(&self) -> &Self::Target {
35174        unsafe { core::mem::transmute(self) }
35175    }
35176}
35177windows_core::imp::interface_hierarchy!(
35178    ICoreWebView2Settings7,
35179    windows_core::IUnknown,
35180    ICoreWebView2Settings,
35181    ICoreWebView2Settings2,
35182    ICoreWebView2Settings3,
35183    ICoreWebView2Settings4,
35184    ICoreWebView2Settings5,
35185    ICoreWebView2Settings6
35186);
35187impl ICoreWebView2Settings7 {
35188    pub unsafe fn HiddenPdfToolbarItems(
35189        &self,
35190        value: *mut COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35191    ) -> windows_core::Result<()> {
35192        unsafe {
35193            (windows_core::Interface::vtable(self).HiddenPdfToolbarItems)(
35194                windows_core::Interface::as_raw(self),
35195                value as _,
35196            )
35197            .ok()
35198        }
35199    }
35200    pub unsafe fn SetHiddenPdfToolbarItems(
35201        &self,
35202        value: COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35203    ) -> windows_core::Result<()> {
35204        unsafe {
35205            (windows_core::Interface::vtable(self).SetHiddenPdfToolbarItems)(
35206                windows_core::Interface::as_raw(self),
35207                value,
35208            )
35209            .ok()
35210        }
35211    }
35212}
35213#[repr(C)]
35214#[doc(hidden)]
35215pub struct ICoreWebView2Settings7_Vtbl {
35216    pub base__: ICoreWebView2Settings6_Vtbl,
35217    pub HiddenPdfToolbarItems: unsafe extern "system" fn(
35218        *mut core::ffi::c_void,
35219        *mut COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35220    ) -> windows_core::HRESULT,
35221    pub SetHiddenPdfToolbarItems: unsafe extern "system" fn(
35222        *mut core::ffi::c_void,
35223        COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35224    ) -> windows_core::HRESULT,
35225}
35226pub trait ICoreWebView2Settings7_Impl: ICoreWebView2Settings6_Impl {
35227    fn HiddenPdfToolbarItems(
35228        &self,
35229        value: *mut COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35230    ) -> windows_core::Result<()>;
35231    fn SetHiddenPdfToolbarItems(
35232        &self,
35233        value: COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35234    ) -> windows_core::Result<()>;
35235}
35236impl ICoreWebView2Settings7_Vtbl {
35237    pub const fn new<Identity: ICoreWebView2Settings7_Impl, const OFFSET: isize>() -> Self {
35238        unsafe extern "system" fn HiddenPdfToolbarItems<
35239            Identity: ICoreWebView2Settings7_Impl,
35240            const OFFSET: isize,
35241        >(
35242            this: *mut core::ffi::c_void,
35243            value: *mut COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35244        ) -> windows_core::HRESULT {
35245            unsafe {
35246                let this: &Identity =
35247                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35248                ICoreWebView2Settings7_Impl::HiddenPdfToolbarItems(
35249                    this,
35250                    core::mem::transmute_copy(&value),
35251                )
35252                .into()
35253            }
35254        }
35255        unsafe extern "system" fn SetHiddenPdfToolbarItems<
35256            Identity: ICoreWebView2Settings7_Impl,
35257            const OFFSET: isize,
35258        >(
35259            this: *mut core::ffi::c_void,
35260            value: COREWEBVIEW2_PDF_TOOLBAR_ITEMS,
35261        ) -> windows_core::HRESULT {
35262            unsafe {
35263                let this: &Identity =
35264                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35265                ICoreWebView2Settings7_Impl::SetHiddenPdfToolbarItems(
35266                    this,
35267                    core::mem::transmute_copy(&value),
35268                )
35269                .into()
35270            }
35271        }
35272        Self {
35273            base__: ICoreWebView2Settings6_Vtbl::new::<Identity, OFFSET>(),
35274            HiddenPdfToolbarItems: HiddenPdfToolbarItems::<Identity, OFFSET>,
35275            SetHiddenPdfToolbarItems: SetHiddenPdfToolbarItems::<Identity, OFFSET>,
35276        }
35277    }
35278    pub fn matches(iid: &windows_core::GUID) -> bool {
35279        iid == &<ICoreWebView2Settings7 as windows_core::Interface>::IID
35280            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
35281            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
35282            || iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
35283            || iid == &<ICoreWebView2Settings4 as windows_core::Interface>::IID
35284            || iid == &<ICoreWebView2Settings5 as windows_core::Interface>::IID
35285            || iid == &<ICoreWebView2Settings6 as windows_core::Interface>::IID
35286    }
35287}
35288impl windows_core::RuntimeName for ICoreWebView2Settings7 {}
35289windows_core::imp::define_interface!(
35290    ICoreWebView2Settings8,
35291    ICoreWebView2Settings8_Vtbl,
35292    0x9e6b0e8f_86ad_4e81_8147_a9b5edb68650
35293);
35294impl core::ops::Deref for ICoreWebView2Settings8 {
35295    type Target = ICoreWebView2Settings7;
35296    fn deref(&self) -> &Self::Target {
35297        unsafe { core::mem::transmute(self) }
35298    }
35299}
35300windows_core::imp::interface_hierarchy!(
35301    ICoreWebView2Settings8,
35302    windows_core::IUnknown,
35303    ICoreWebView2Settings,
35304    ICoreWebView2Settings2,
35305    ICoreWebView2Settings3,
35306    ICoreWebView2Settings4,
35307    ICoreWebView2Settings5,
35308    ICoreWebView2Settings6,
35309    ICoreWebView2Settings7
35310);
35311impl ICoreWebView2Settings8 {
35312    pub unsafe fn IsReputationCheckingRequired(
35313        &self,
35314        value: *mut windows_core::BOOL,
35315    ) -> windows_core::Result<()> {
35316        unsafe {
35317            (windows_core::Interface::vtable(self).IsReputationCheckingRequired)(
35318                windows_core::Interface::as_raw(self),
35319                value as _,
35320            )
35321            .ok()
35322        }
35323    }
35324    pub unsafe fn SetIsReputationCheckingRequired(&self, value: bool) -> windows_core::Result<()> {
35325        unsafe {
35326            (windows_core::Interface::vtable(self).SetIsReputationCheckingRequired)(
35327                windows_core::Interface::as_raw(self),
35328                value.into(),
35329            )
35330            .ok()
35331        }
35332    }
35333}
35334#[repr(C)]
35335#[doc(hidden)]
35336pub struct ICoreWebView2Settings8_Vtbl {
35337    pub base__: ICoreWebView2Settings7_Vtbl,
35338    pub IsReputationCheckingRequired: unsafe extern "system" fn(
35339        *mut core::ffi::c_void,
35340        *mut windows_core::BOOL,
35341    ) -> windows_core::HRESULT,
35342    pub SetIsReputationCheckingRequired: unsafe extern "system" fn(
35343        *mut core::ffi::c_void,
35344        windows_core::BOOL,
35345    ) -> windows_core::HRESULT,
35346}
35347pub trait ICoreWebView2Settings8_Impl: ICoreWebView2Settings7_Impl {
35348    fn IsReputationCheckingRequired(
35349        &self,
35350        value: *mut windows_core::BOOL,
35351    ) -> windows_core::Result<()>;
35352    fn SetIsReputationCheckingRequired(
35353        &self,
35354        value: windows_core::BOOL,
35355    ) -> windows_core::Result<()>;
35356}
35357impl ICoreWebView2Settings8_Vtbl {
35358    pub const fn new<Identity: ICoreWebView2Settings8_Impl, const OFFSET: isize>() -> Self {
35359        unsafe extern "system" fn IsReputationCheckingRequired<
35360            Identity: ICoreWebView2Settings8_Impl,
35361            const OFFSET: isize,
35362        >(
35363            this: *mut core::ffi::c_void,
35364            value: *mut windows_core::BOOL,
35365        ) -> windows_core::HRESULT {
35366            unsafe {
35367                let this: &Identity =
35368                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35369                ICoreWebView2Settings8_Impl::IsReputationCheckingRequired(
35370                    this,
35371                    core::mem::transmute_copy(&value),
35372                )
35373                .into()
35374            }
35375        }
35376        unsafe extern "system" fn SetIsReputationCheckingRequired<
35377            Identity: ICoreWebView2Settings8_Impl,
35378            const OFFSET: isize,
35379        >(
35380            this: *mut core::ffi::c_void,
35381            value: windows_core::BOOL,
35382        ) -> windows_core::HRESULT {
35383            unsafe {
35384                let this: &Identity =
35385                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35386                ICoreWebView2Settings8_Impl::SetIsReputationCheckingRequired(
35387                    this,
35388                    core::mem::transmute_copy(&value),
35389                )
35390                .into()
35391            }
35392        }
35393        Self {
35394            base__: ICoreWebView2Settings7_Vtbl::new::<Identity, OFFSET>(),
35395            IsReputationCheckingRequired: IsReputationCheckingRequired::<Identity, OFFSET>,
35396            SetIsReputationCheckingRequired: SetIsReputationCheckingRequired::<Identity, OFFSET>,
35397        }
35398    }
35399    pub fn matches(iid: &windows_core::GUID) -> bool {
35400        iid == &<ICoreWebView2Settings8 as windows_core::Interface>::IID
35401            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
35402            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
35403            || iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
35404            || iid == &<ICoreWebView2Settings4 as windows_core::Interface>::IID
35405            || iid == &<ICoreWebView2Settings5 as windows_core::Interface>::IID
35406            || iid == &<ICoreWebView2Settings6 as windows_core::Interface>::IID
35407            || iid == &<ICoreWebView2Settings7 as windows_core::Interface>::IID
35408    }
35409}
35410impl windows_core::RuntimeName for ICoreWebView2Settings8 {}
35411windows_core::imp::define_interface!(
35412    ICoreWebView2Settings9,
35413    ICoreWebView2Settings9_Vtbl,
35414    0x0528a73b_e92d_49f4_927a_e547dddaa37d
35415);
35416impl core::ops::Deref for ICoreWebView2Settings9 {
35417    type Target = ICoreWebView2Settings8;
35418    fn deref(&self) -> &Self::Target {
35419        unsafe { core::mem::transmute(self) }
35420    }
35421}
35422windows_core::imp::interface_hierarchy!(
35423    ICoreWebView2Settings9,
35424    windows_core::IUnknown,
35425    ICoreWebView2Settings,
35426    ICoreWebView2Settings2,
35427    ICoreWebView2Settings3,
35428    ICoreWebView2Settings4,
35429    ICoreWebView2Settings5,
35430    ICoreWebView2Settings6,
35431    ICoreWebView2Settings7,
35432    ICoreWebView2Settings8
35433);
35434impl ICoreWebView2Settings9 {
35435    pub unsafe fn IsNonClientRegionSupportEnabled(
35436        &self,
35437        value: *mut windows_core::BOOL,
35438    ) -> windows_core::Result<()> {
35439        unsafe {
35440            (windows_core::Interface::vtable(self).IsNonClientRegionSupportEnabled)(
35441                windows_core::Interface::as_raw(self),
35442                value as _,
35443            )
35444            .ok()
35445        }
35446    }
35447    pub unsafe fn SetIsNonClientRegionSupportEnabled(
35448        &self,
35449        value: bool,
35450    ) -> windows_core::Result<()> {
35451        unsafe {
35452            (windows_core::Interface::vtable(self).SetIsNonClientRegionSupportEnabled)(
35453                windows_core::Interface::as_raw(self),
35454                value.into(),
35455            )
35456            .ok()
35457        }
35458    }
35459}
35460#[repr(C)]
35461#[doc(hidden)]
35462pub struct ICoreWebView2Settings9_Vtbl {
35463    pub base__: ICoreWebView2Settings8_Vtbl,
35464    pub IsNonClientRegionSupportEnabled: unsafe extern "system" fn(
35465        *mut core::ffi::c_void,
35466        *mut windows_core::BOOL,
35467    ) -> windows_core::HRESULT,
35468    pub SetIsNonClientRegionSupportEnabled: unsafe extern "system" fn(
35469        *mut core::ffi::c_void,
35470        windows_core::BOOL,
35471    ) -> windows_core::HRESULT,
35472}
35473pub trait ICoreWebView2Settings9_Impl: ICoreWebView2Settings8_Impl {
35474    fn IsNonClientRegionSupportEnabled(
35475        &self,
35476        value: *mut windows_core::BOOL,
35477    ) -> windows_core::Result<()>;
35478    fn SetIsNonClientRegionSupportEnabled(
35479        &self,
35480        value: windows_core::BOOL,
35481    ) -> windows_core::Result<()>;
35482}
35483impl ICoreWebView2Settings9_Vtbl {
35484    pub const fn new<Identity: ICoreWebView2Settings9_Impl, const OFFSET: isize>() -> Self {
35485        unsafe extern "system" fn IsNonClientRegionSupportEnabled<
35486            Identity: ICoreWebView2Settings9_Impl,
35487            const OFFSET: isize,
35488        >(
35489            this: *mut core::ffi::c_void,
35490            value: *mut windows_core::BOOL,
35491        ) -> windows_core::HRESULT {
35492            unsafe {
35493                let this: &Identity =
35494                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35495                ICoreWebView2Settings9_Impl::IsNonClientRegionSupportEnabled(
35496                    this,
35497                    core::mem::transmute_copy(&value),
35498                )
35499                .into()
35500            }
35501        }
35502        unsafe extern "system" fn SetIsNonClientRegionSupportEnabled<
35503            Identity: ICoreWebView2Settings9_Impl,
35504            const OFFSET: isize,
35505        >(
35506            this: *mut core::ffi::c_void,
35507            value: windows_core::BOOL,
35508        ) -> windows_core::HRESULT {
35509            unsafe {
35510                let this: &Identity =
35511                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35512                ICoreWebView2Settings9_Impl::SetIsNonClientRegionSupportEnabled(
35513                    this,
35514                    core::mem::transmute_copy(&value),
35515                )
35516                .into()
35517            }
35518        }
35519        Self {
35520            base__: ICoreWebView2Settings8_Vtbl::new::<Identity, OFFSET>(),
35521            IsNonClientRegionSupportEnabled: IsNonClientRegionSupportEnabled::<Identity, OFFSET>,
35522            SetIsNonClientRegionSupportEnabled: SetIsNonClientRegionSupportEnabled::<
35523                Identity,
35524                OFFSET,
35525            >,
35526        }
35527    }
35528    pub fn matches(iid: &windows_core::GUID) -> bool {
35529        iid == &<ICoreWebView2Settings9 as windows_core::Interface>::IID
35530            || iid == &<ICoreWebView2Settings as windows_core::Interface>::IID
35531            || iid == &<ICoreWebView2Settings2 as windows_core::Interface>::IID
35532            || iid == &<ICoreWebView2Settings3 as windows_core::Interface>::IID
35533            || iid == &<ICoreWebView2Settings4 as windows_core::Interface>::IID
35534            || iid == &<ICoreWebView2Settings5 as windows_core::Interface>::IID
35535            || iid == &<ICoreWebView2Settings6 as windows_core::Interface>::IID
35536            || iid == &<ICoreWebView2Settings7 as windows_core::Interface>::IID
35537            || iid == &<ICoreWebView2Settings8 as windows_core::Interface>::IID
35538    }
35539}
35540impl windows_core::RuntimeName for ICoreWebView2Settings9 {}
35541windows_core::imp::define_interface!(
35542    ICoreWebView2SharedBuffer,
35543    ICoreWebView2SharedBuffer_Vtbl,
35544    0xb747a495_0c6f_449e_97b8_2f81e9d6ab43
35545);
35546windows_core::imp::interface_hierarchy!(ICoreWebView2SharedBuffer, windows_core::IUnknown);
35547impl ICoreWebView2SharedBuffer {
35548    pub unsafe fn Size(&self, value: *mut u64) -> windows_core::Result<()> {
35549        unsafe {
35550            (windows_core::Interface::vtable(self).Size)(
35551                windows_core::Interface::as_raw(self),
35552                value as _,
35553            )
35554            .ok()
35555        }
35556    }
35557    pub unsafe fn Buffer(&self, value: *mut *mut u8) -> windows_core::Result<()> {
35558        unsafe {
35559            (windows_core::Interface::vtable(self).Buffer)(
35560                windows_core::Interface::as_raw(self),
35561                value as _,
35562            )
35563            .ok()
35564        }
35565    }
35566    pub unsafe fn OpenStream(&self) -> windows_core::Result<windows::Win32::System::Com::IStream> {
35567        unsafe {
35568            let mut result__ = core::mem::zeroed();
35569            (windows_core::Interface::vtable(self).OpenStream)(
35570                windows_core::Interface::as_raw(self),
35571                &mut result__,
35572            )
35573            .and_then(|| windows_core::Type::from_abi(result__))
35574        }
35575    }
35576    pub unsafe fn FileMappingHandle(
35577        &self,
35578        value: *mut windows::Win32::Foundation::HANDLE,
35579    ) -> windows_core::Result<()> {
35580        unsafe {
35581            (windows_core::Interface::vtable(self).FileMappingHandle)(
35582                windows_core::Interface::as_raw(self),
35583                value as _,
35584            )
35585            .ok()
35586        }
35587    }
35588    pub unsafe fn Close(&self) -> windows_core::Result<()> {
35589        unsafe {
35590            (windows_core::Interface::vtable(self).Close)(windows_core::Interface::as_raw(self))
35591                .ok()
35592        }
35593    }
35594}
35595#[repr(C)]
35596#[doc(hidden)]
35597pub struct ICoreWebView2SharedBuffer_Vtbl {
35598    pub base__: windows_core::IUnknown_Vtbl,
35599    pub Size: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
35600    pub Buffer:
35601        unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
35602    pub OpenStream: unsafe extern "system" fn(
35603        *mut core::ffi::c_void,
35604        *mut *mut core::ffi::c_void,
35605    ) -> windows_core::HRESULT,
35606    pub FileMappingHandle: unsafe extern "system" fn(
35607        *mut core::ffi::c_void,
35608        *mut windows::Win32::Foundation::HANDLE,
35609    ) -> windows_core::HRESULT,
35610    pub Close: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
35611}
35612pub trait ICoreWebView2SharedBuffer_Impl: windows_core::IUnknownImpl {
35613    fn Size(&self, value: *mut u64) -> windows_core::Result<()>;
35614    fn Buffer(&self, value: *mut *mut u8) -> windows_core::Result<()>;
35615    fn OpenStream(&self) -> windows_core::Result<windows::Win32::System::Com::IStream>;
35616    fn FileMappingHandle(
35617        &self,
35618        value: *mut windows::Win32::Foundation::HANDLE,
35619    ) -> windows_core::Result<()>;
35620    fn Close(&self) -> windows_core::Result<()>;
35621}
35622impl ICoreWebView2SharedBuffer_Vtbl {
35623    pub const fn new<Identity: ICoreWebView2SharedBuffer_Impl, const OFFSET: isize>() -> Self {
35624        unsafe extern "system" fn Size<
35625            Identity: ICoreWebView2SharedBuffer_Impl,
35626            const OFFSET: isize,
35627        >(
35628            this: *mut core::ffi::c_void,
35629            value: *mut u64,
35630        ) -> windows_core::HRESULT {
35631            unsafe {
35632                let this: &Identity =
35633                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35634                ICoreWebView2SharedBuffer_Impl::Size(this, core::mem::transmute_copy(&value)).into()
35635            }
35636        }
35637        unsafe extern "system" fn Buffer<
35638            Identity: ICoreWebView2SharedBuffer_Impl,
35639            const OFFSET: isize,
35640        >(
35641            this: *mut core::ffi::c_void,
35642            value: *mut *mut u8,
35643        ) -> windows_core::HRESULT {
35644            unsafe {
35645                let this: &Identity =
35646                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35647                ICoreWebView2SharedBuffer_Impl::Buffer(this, core::mem::transmute_copy(&value))
35648                    .into()
35649            }
35650        }
35651        unsafe extern "system" fn OpenStream<
35652            Identity: ICoreWebView2SharedBuffer_Impl,
35653            const OFFSET: isize,
35654        >(
35655            this: *mut core::ffi::c_void,
35656            value: *mut *mut core::ffi::c_void,
35657        ) -> windows_core::HRESULT {
35658            unsafe {
35659                let this: &Identity =
35660                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35661                match ICoreWebView2SharedBuffer_Impl::OpenStream(this) {
35662                    Ok(ok__) => {
35663                        value.write(core::mem::transmute(ok__));
35664                        windows_core::HRESULT(0)
35665                    }
35666                    Err(err) => err.into(),
35667                }
35668            }
35669        }
35670        unsafe extern "system" fn FileMappingHandle<
35671            Identity: ICoreWebView2SharedBuffer_Impl,
35672            const OFFSET: isize,
35673        >(
35674            this: *mut core::ffi::c_void,
35675            value: *mut windows::Win32::Foundation::HANDLE,
35676        ) -> windows_core::HRESULT {
35677            unsafe {
35678                let this: &Identity =
35679                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35680                ICoreWebView2SharedBuffer_Impl::FileMappingHandle(
35681                    this,
35682                    core::mem::transmute_copy(&value),
35683                )
35684                .into()
35685            }
35686        }
35687        unsafe extern "system" fn Close<
35688            Identity: ICoreWebView2SharedBuffer_Impl,
35689            const OFFSET: isize,
35690        >(
35691            this: *mut core::ffi::c_void,
35692        ) -> windows_core::HRESULT {
35693            unsafe {
35694                let this: &Identity =
35695                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35696                ICoreWebView2SharedBuffer_Impl::Close(this).into()
35697            }
35698        }
35699        Self {
35700            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35701            Size: Size::<Identity, OFFSET>,
35702            Buffer: Buffer::<Identity, OFFSET>,
35703            OpenStream: OpenStream::<Identity, OFFSET>,
35704            FileMappingHandle: FileMappingHandle::<Identity, OFFSET>,
35705            Close: Close::<Identity, OFFSET>,
35706        }
35707    }
35708    pub fn matches(iid: &windows_core::GUID) -> bool {
35709        iid == &<ICoreWebView2SharedBuffer as windows_core::Interface>::IID
35710    }
35711}
35712impl windows_core::RuntimeName for ICoreWebView2SharedBuffer {}
35713windows_core::imp::define_interface!(
35714    ICoreWebView2ShowSaveAsUICompletedHandler,
35715    ICoreWebView2ShowSaveAsUICompletedHandler_Vtbl,
35716    0xe24b07e3_8169_5c34_994a_7f6478946a3c
35717);
35718windows_core::imp::interface_hierarchy!(
35719    ICoreWebView2ShowSaveAsUICompletedHandler,
35720    windows_core::IUnknown
35721);
35722impl ICoreWebView2ShowSaveAsUICompletedHandler {
35723    pub unsafe fn Invoke(
35724        &self,
35725        errorcode: windows_core::HRESULT,
35726        result: COREWEBVIEW2_SAVE_AS_UI_RESULT,
35727    ) -> windows_core::Result<()> {
35728        unsafe {
35729            (windows_core::Interface::vtable(self).Invoke)(
35730                windows_core::Interface::as_raw(self),
35731                errorcode,
35732                result,
35733            )
35734            .ok()
35735        }
35736    }
35737}
35738#[repr(C)]
35739#[doc(hidden)]
35740pub struct ICoreWebView2ShowSaveAsUICompletedHandler_Vtbl {
35741    pub base__: windows_core::IUnknown_Vtbl,
35742    pub Invoke: unsafe extern "system" fn(
35743        *mut core::ffi::c_void,
35744        windows_core::HRESULT,
35745        COREWEBVIEW2_SAVE_AS_UI_RESULT,
35746    ) -> windows_core::HRESULT,
35747}
35748pub trait ICoreWebView2ShowSaveAsUICompletedHandler_Impl: windows_core::IUnknownImpl {
35749    fn Invoke(
35750        &self,
35751        errorcode: windows_core::HRESULT,
35752        result: COREWEBVIEW2_SAVE_AS_UI_RESULT,
35753    ) -> windows_core::Result<()>;
35754}
35755impl ICoreWebView2ShowSaveAsUICompletedHandler_Vtbl {
35756    pub const fn new<
35757        Identity: ICoreWebView2ShowSaveAsUICompletedHandler_Impl,
35758        const OFFSET: isize,
35759    >() -> Self {
35760        unsafe extern "system" fn Invoke<
35761            Identity: ICoreWebView2ShowSaveAsUICompletedHandler_Impl,
35762            const OFFSET: isize,
35763        >(
35764            this: *mut core::ffi::c_void,
35765            errorcode: windows_core::HRESULT,
35766            result: COREWEBVIEW2_SAVE_AS_UI_RESULT,
35767        ) -> windows_core::HRESULT {
35768            unsafe {
35769                let this: &Identity =
35770                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35771                ICoreWebView2ShowSaveAsUICompletedHandler_Impl::Invoke(
35772                    this,
35773                    core::mem::transmute_copy(&errorcode),
35774                    core::mem::transmute_copy(&result),
35775                )
35776                .into()
35777            }
35778        }
35779        Self {
35780            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35781            Invoke: Invoke::<Identity, OFFSET>,
35782        }
35783    }
35784    pub fn matches(iid: &windows_core::GUID) -> bool {
35785        iid == &<ICoreWebView2ShowSaveAsUICompletedHandler as windows_core::Interface>::IID
35786    }
35787}
35788impl windows_core::RuntimeName for ICoreWebView2ShowSaveAsUICompletedHandler {}
35789windows_core::imp::define_interface!(
35790    ICoreWebView2SourceChangedEventArgs,
35791    ICoreWebView2SourceChangedEventArgs_Vtbl,
35792    0x31e0e545_1dba_4266_8914_f63848a1f7d7
35793);
35794windows_core::imp::interface_hierarchy!(
35795    ICoreWebView2SourceChangedEventArgs,
35796    windows_core::IUnknown
35797);
35798impl ICoreWebView2SourceChangedEventArgs {
35799    pub unsafe fn IsNewDocument(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
35800        unsafe {
35801            (windows_core::Interface::vtable(self).IsNewDocument)(
35802                windows_core::Interface::as_raw(self),
35803                value as _,
35804            )
35805            .ok()
35806        }
35807    }
35808}
35809#[repr(C)]
35810#[doc(hidden)]
35811pub struct ICoreWebView2SourceChangedEventArgs_Vtbl {
35812    pub base__: windows_core::IUnknown_Vtbl,
35813    pub IsNewDocument: unsafe extern "system" fn(
35814        *mut core::ffi::c_void,
35815        *mut windows_core::BOOL,
35816    ) -> windows_core::HRESULT,
35817}
35818pub trait ICoreWebView2SourceChangedEventArgs_Impl: windows_core::IUnknownImpl {
35819    fn IsNewDocument(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
35820}
35821impl ICoreWebView2SourceChangedEventArgs_Vtbl {
35822    pub const fn new<Identity: ICoreWebView2SourceChangedEventArgs_Impl, const OFFSET: isize>(
35823    ) -> Self {
35824        unsafe extern "system" fn IsNewDocument<
35825            Identity: ICoreWebView2SourceChangedEventArgs_Impl,
35826            const OFFSET: isize,
35827        >(
35828            this: *mut core::ffi::c_void,
35829            value: *mut windows_core::BOOL,
35830        ) -> windows_core::HRESULT {
35831            unsafe {
35832                let this: &Identity =
35833                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35834                ICoreWebView2SourceChangedEventArgs_Impl::IsNewDocument(
35835                    this,
35836                    core::mem::transmute_copy(&value),
35837                )
35838                .into()
35839            }
35840        }
35841        Self {
35842            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35843            IsNewDocument: IsNewDocument::<Identity, OFFSET>,
35844        }
35845    }
35846    pub fn matches(iid: &windows_core::GUID) -> bool {
35847        iid == &<ICoreWebView2SourceChangedEventArgs as windows_core::Interface>::IID
35848    }
35849}
35850impl windows_core::RuntimeName for ICoreWebView2SourceChangedEventArgs {}
35851windows_core::imp::define_interface!(
35852    ICoreWebView2SourceChangedEventHandler,
35853    ICoreWebView2SourceChangedEventHandler_Vtbl,
35854    0x3c067f9f_5388_4772_8b48_79f7ef1ab37c
35855);
35856windows_core::imp::interface_hierarchy!(
35857    ICoreWebView2SourceChangedEventHandler,
35858    windows_core::IUnknown
35859);
35860impl ICoreWebView2SourceChangedEventHandler {
35861    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
35862    where
35863        P0: windows_core::Param<ICoreWebView2>,
35864        P1: windows_core::Param<ICoreWebView2SourceChangedEventArgs>,
35865    {
35866        unsafe {
35867            (windows_core::Interface::vtable(self).Invoke)(
35868                windows_core::Interface::as_raw(self),
35869                sender.param().abi(),
35870                args.param().abi(),
35871            )
35872            .ok()
35873        }
35874    }
35875}
35876#[repr(C)]
35877#[doc(hidden)]
35878pub struct ICoreWebView2SourceChangedEventHandler_Vtbl {
35879    pub base__: windows_core::IUnknown_Vtbl,
35880    pub Invoke: unsafe extern "system" fn(
35881        *mut core::ffi::c_void,
35882        *mut core::ffi::c_void,
35883        *mut core::ffi::c_void,
35884    ) -> windows_core::HRESULT,
35885}
35886pub trait ICoreWebView2SourceChangedEventHandler_Impl: windows_core::IUnknownImpl {
35887    fn Invoke(
35888        &self,
35889        sender: windows_core::Ref<'_, ICoreWebView2>,
35890        args: windows_core::Ref<'_, ICoreWebView2SourceChangedEventArgs>,
35891    ) -> windows_core::Result<()>;
35892}
35893impl ICoreWebView2SourceChangedEventHandler_Vtbl {
35894    pub const fn new<Identity: ICoreWebView2SourceChangedEventHandler_Impl, const OFFSET: isize>(
35895    ) -> Self {
35896        unsafe extern "system" fn Invoke<
35897            Identity: ICoreWebView2SourceChangedEventHandler_Impl,
35898            const OFFSET: isize,
35899        >(
35900            this: *mut core::ffi::c_void,
35901            sender: *mut core::ffi::c_void,
35902            args: *mut core::ffi::c_void,
35903        ) -> windows_core::HRESULT {
35904            unsafe {
35905                let this: &Identity =
35906                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35907                ICoreWebView2SourceChangedEventHandler_Impl::Invoke(
35908                    this,
35909                    core::mem::transmute_copy(&sender),
35910                    core::mem::transmute_copy(&args),
35911                )
35912                .into()
35913            }
35914        }
35915        Self {
35916            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35917            Invoke: Invoke::<Identity, OFFSET>,
35918        }
35919    }
35920    pub fn matches(iid: &windows_core::GUID) -> bool {
35921        iid == &<ICoreWebView2SourceChangedEventHandler as windows_core::Interface>::IID
35922    }
35923}
35924impl windows_core::RuntimeName for ICoreWebView2SourceChangedEventHandler {}
35925windows_core::imp::define_interface!(
35926    ICoreWebView2StateChangedEventHandler,
35927    ICoreWebView2StateChangedEventHandler_Vtbl,
35928    0x81336594_7ede_4ba9_bf71_acf0a95b58dd
35929);
35930windows_core::imp::interface_hierarchy!(
35931    ICoreWebView2StateChangedEventHandler,
35932    windows_core::IUnknown
35933);
35934impl ICoreWebView2StateChangedEventHandler {
35935    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
35936    where
35937        P0: windows_core::Param<ICoreWebView2DownloadOperation>,
35938        P1: windows_core::Param<windows_core::IUnknown>,
35939    {
35940        unsafe {
35941            (windows_core::Interface::vtable(self).Invoke)(
35942                windows_core::Interface::as_raw(self),
35943                sender.param().abi(),
35944                args.param().abi(),
35945            )
35946            .ok()
35947        }
35948    }
35949}
35950#[repr(C)]
35951#[doc(hidden)]
35952pub struct ICoreWebView2StateChangedEventHandler_Vtbl {
35953    pub base__: windows_core::IUnknown_Vtbl,
35954    pub Invoke: unsafe extern "system" fn(
35955        *mut core::ffi::c_void,
35956        *mut core::ffi::c_void,
35957        *mut core::ffi::c_void,
35958    ) -> windows_core::HRESULT,
35959}
35960pub trait ICoreWebView2StateChangedEventHandler_Impl: windows_core::IUnknownImpl {
35961    fn Invoke(
35962        &self,
35963        sender: windows_core::Ref<'_, ICoreWebView2DownloadOperation>,
35964        args: windows_core::Ref<'_, windows_core::IUnknown>,
35965    ) -> windows_core::Result<()>;
35966}
35967impl ICoreWebView2StateChangedEventHandler_Vtbl {
35968    pub const fn new<Identity: ICoreWebView2StateChangedEventHandler_Impl, const OFFSET: isize>(
35969    ) -> Self {
35970        unsafe extern "system" fn Invoke<
35971            Identity: ICoreWebView2StateChangedEventHandler_Impl,
35972            const OFFSET: isize,
35973        >(
35974            this: *mut core::ffi::c_void,
35975            sender: *mut core::ffi::c_void,
35976            args: *mut core::ffi::c_void,
35977        ) -> windows_core::HRESULT {
35978            unsafe {
35979                let this: &Identity =
35980                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35981                ICoreWebView2StateChangedEventHandler_Impl::Invoke(
35982                    this,
35983                    core::mem::transmute_copy(&sender),
35984                    core::mem::transmute_copy(&args),
35985                )
35986                .into()
35987            }
35988        }
35989        Self {
35990            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35991            Invoke: Invoke::<Identity, OFFSET>,
35992        }
35993    }
35994    pub fn matches(iid: &windows_core::GUID) -> bool {
35995        iid == &<ICoreWebView2StateChangedEventHandler as windows_core::Interface>::IID
35996    }
35997}
35998impl windows_core::RuntimeName for ICoreWebView2StateChangedEventHandler {}
35999windows_core::imp::define_interface!(
36000    ICoreWebView2StatusBarTextChangedEventHandler,
36001    ICoreWebView2StatusBarTextChangedEventHandler_Vtbl,
36002    0xa5e3b0d0_10df_4156_bfad_3b43867acac6
36003);
36004windows_core::imp::interface_hierarchy!(
36005    ICoreWebView2StatusBarTextChangedEventHandler,
36006    windows_core::IUnknown
36007);
36008impl ICoreWebView2StatusBarTextChangedEventHandler {
36009    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
36010    where
36011        P0: windows_core::Param<ICoreWebView2>,
36012        P1: windows_core::Param<windows_core::IUnknown>,
36013    {
36014        unsafe {
36015            (windows_core::Interface::vtable(self).Invoke)(
36016                windows_core::Interface::as_raw(self),
36017                sender.param().abi(),
36018                args.param().abi(),
36019            )
36020            .ok()
36021        }
36022    }
36023}
36024#[repr(C)]
36025#[doc(hidden)]
36026pub struct ICoreWebView2StatusBarTextChangedEventHandler_Vtbl {
36027    pub base__: windows_core::IUnknown_Vtbl,
36028    pub Invoke: unsafe extern "system" fn(
36029        *mut core::ffi::c_void,
36030        *mut core::ffi::c_void,
36031        *mut core::ffi::c_void,
36032    ) -> windows_core::HRESULT,
36033}
36034pub trait ICoreWebView2StatusBarTextChangedEventHandler_Impl: windows_core::IUnknownImpl {
36035    fn Invoke(
36036        &self,
36037        sender: windows_core::Ref<'_, ICoreWebView2>,
36038        args: windows_core::Ref<'_, windows_core::IUnknown>,
36039    ) -> windows_core::Result<()>;
36040}
36041impl ICoreWebView2StatusBarTextChangedEventHandler_Vtbl {
36042    pub const fn new<
36043        Identity: ICoreWebView2StatusBarTextChangedEventHandler_Impl,
36044        const OFFSET: isize,
36045    >() -> Self {
36046        unsafe extern "system" fn Invoke<
36047            Identity: ICoreWebView2StatusBarTextChangedEventHandler_Impl,
36048            const OFFSET: isize,
36049        >(
36050            this: *mut core::ffi::c_void,
36051            sender: *mut core::ffi::c_void,
36052            args: *mut core::ffi::c_void,
36053        ) -> windows_core::HRESULT {
36054            unsafe {
36055                let this: &Identity =
36056                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36057                ICoreWebView2StatusBarTextChangedEventHandler_Impl::Invoke(
36058                    this,
36059                    core::mem::transmute_copy(&sender),
36060                    core::mem::transmute_copy(&args),
36061                )
36062                .into()
36063            }
36064        }
36065        Self {
36066            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36067            Invoke: Invoke::<Identity, OFFSET>,
36068        }
36069    }
36070    pub fn matches(iid: &windows_core::GUID) -> bool {
36071        iid == &<ICoreWebView2StatusBarTextChangedEventHandler as windows_core::Interface>::IID
36072    }
36073}
36074impl windows_core::RuntimeName for ICoreWebView2StatusBarTextChangedEventHandler {}
36075windows_core::imp::define_interface!(
36076    ICoreWebView2StringCollection,
36077    ICoreWebView2StringCollection_Vtbl,
36078    0xf41f3f8a_bcc3_11eb_8529_0242ac130003
36079);
36080windows_core::imp::interface_hierarchy!(ICoreWebView2StringCollection, windows_core::IUnknown);
36081impl ICoreWebView2StringCollection {
36082    pub unsafe fn Count(&self, value: *mut u32) -> windows_core::Result<()> {
36083        unsafe {
36084            (windows_core::Interface::vtable(self).Count)(
36085                windows_core::Interface::as_raw(self),
36086                value as _,
36087            )
36088            .ok()
36089        }
36090    }
36091    pub unsafe fn GetValueAtIndex(
36092        &self,
36093        index: u32,
36094        value: *mut windows_core::PWSTR,
36095    ) -> windows_core::Result<()> {
36096        unsafe {
36097            (windows_core::Interface::vtable(self).GetValueAtIndex)(
36098                windows_core::Interface::as_raw(self),
36099                index,
36100                value as _,
36101            )
36102            .ok()
36103        }
36104    }
36105}
36106#[repr(C)]
36107#[doc(hidden)]
36108pub struct ICoreWebView2StringCollection_Vtbl {
36109    pub base__: windows_core::IUnknown_Vtbl,
36110    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
36111    pub GetValueAtIndex: unsafe extern "system" fn(
36112        *mut core::ffi::c_void,
36113        u32,
36114        *mut windows_core::PWSTR,
36115    ) -> windows_core::HRESULT,
36116}
36117pub trait ICoreWebView2StringCollection_Impl: windows_core::IUnknownImpl {
36118    fn Count(&self, value: *mut u32) -> windows_core::Result<()>;
36119    fn GetValueAtIndex(
36120        &self,
36121        index: u32,
36122        value: *mut windows_core::PWSTR,
36123    ) -> windows_core::Result<()>;
36124}
36125impl ICoreWebView2StringCollection_Vtbl {
36126    pub const fn new<Identity: ICoreWebView2StringCollection_Impl, const OFFSET: isize>() -> Self {
36127        unsafe extern "system" fn Count<
36128            Identity: ICoreWebView2StringCollection_Impl,
36129            const OFFSET: isize,
36130        >(
36131            this: *mut core::ffi::c_void,
36132            value: *mut u32,
36133        ) -> windows_core::HRESULT {
36134            unsafe {
36135                let this: &Identity =
36136                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36137                ICoreWebView2StringCollection_Impl::Count(this, core::mem::transmute_copy(&value))
36138                    .into()
36139            }
36140        }
36141        unsafe extern "system" fn GetValueAtIndex<
36142            Identity: ICoreWebView2StringCollection_Impl,
36143            const OFFSET: isize,
36144        >(
36145            this: *mut core::ffi::c_void,
36146            index: u32,
36147            value: *mut windows_core::PWSTR,
36148        ) -> windows_core::HRESULT {
36149            unsafe {
36150                let this: &Identity =
36151                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36152                ICoreWebView2StringCollection_Impl::GetValueAtIndex(
36153                    this,
36154                    core::mem::transmute_copy(&index),
36155                    core::mem::transmute_copy(&value),
36156                )
36157                .into()
36158            }
36159        }
36160        Self {
36161            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36162            Count: Count::<Identity, OFFSET>,
36163            GetValueAtIndex: GetValueAtIndex::<Identity, OFFSET>,
36164        }
36165    }
36166    pub fn matches(iid: &windows_core::GUID) -> bool {
36167        iid == &<ICoreWebView2StringCollection as windows_core::Interface>::IID
36168    }
36169}
36170impl windows_core::RuntimeName for ICoreWebView2StringCollection {}
36171windows_core::imp::define_interface!(
36172    ICoreWebView2TrySuspendCompletedHandler,
36173    ICoreWebView2TrySuspendCompletedHandler_Vtbl,
36174    0x00f206a7_9d17_4605_91f6_4e8e4de192e3
36175);
36176windows_core::imp::interface_hierarchy!(
36177    ICoreWebView2TrySuspendCompletedHandler,
36178    windows_core::IUnknown
36179);
36180impl ICoreWebView2TrySuspendCompletedHandler {
36181    pub unsafe fn Invoke(
36182        &self,
36183        errorcode: windows_core::HRESULT,
36184        result: bool,
36185    ) -> windows_core::Result<()> {
36186        unsafe {
36187            (windows_core::Interface::vtable(self).Invoke)(
36188                windows_core::Interface::as_raw(self),
36189                errorcode,
36190                result.into(),
36191            )
36192            .ok()
36193        }
36194    }
36195}
36196#[repr(C)]
36197#[doc(hidden)]
36198pub struct ICoreWebView2TrySuspendCompletedHandler_Vtbl {
36199    pub base__: windows_core::IUnknown_Vtbl,
36200    pub Invoke: unsafe extern "system" fn(
36201        *mut core::ffi::c_void,
36202        windows_core::HRESULT,
36203        windows_core::BOOL,
36204    ) -> windows_core::HRESULT,
36205}
36206pub trait ICoreWebView2TrySuspendCompletedHandler_Impl: windows_core::IUnknownImpl {
36207    fn Invoke(
36208        &self,
36209        errorcode: windows_core::HRESULT,
36210        result: windows_core::BOOL,
36211    ) -> windows_core::Result<()>;
36212}
36213impl ICoreWebView2TrySuspendCompletedHandler_Vtbl {
36214    pub const fn new<
36215        Identity: ICoreWebView2TrySuspendCompletedHandler_Impl,
36216        const OFFSET: isize,
36217    >() -> Self {
36218        unsafe extern "system" fn Invoke<
36219            Identity: ICoreWebView2TrySuspendCompletedHandler_Impl,
36220            const OFFSET: isize,
36221        >(
36222            this: *mut core::ffi::c_void,
36223            errorcode: windows_core::HRESULT,
36224            result: windows_core::BOOL,
36225        ) -> windows_core::HRESULT {
36226            unsafe {
36227                let this: &Identity =
36228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36229                ICoreWebView2TrySuspendCompletedHandler_Impl::Invoke(
36230                    this,
36231                    core::mem::transmute_copy(&errorcode),
36232                    core::mem::transmute_copy(&result),
36233                )
36234                .into()
36235            }
36236        }
36237        Self {
36238            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36239            Invoke: Invoke::<Identity, OFFSET>,
36240        }
36241    }
36242    pub fn matches(iid: &windows_core::GUID) -> bool {
36243        iid == &<ICoreWebView2TrySuspendCompletedHandler as windows_core::Interface>::IID
36244    }
36245}
36246impl windows_core::RuntimeName for ICoreWebView2TrySuspendCompletedHandler {}
36247windows_core::imp::define_interface!(
36248    ICoreWebView2WebMessageReceivedEventArgs,
36249    ICoreWebView2WebMessageReceivedEventArgs_Vtbl,
36250    0x0f99a40c_e962_4207_9e92_e3d542eff849
36251);
36252windows_core::imp::interface_hierarchy!(
36253    ICoreWebView2WebMessageReceivedEventArgs,
36254    windows_core::IUnknown
36255);
36256impl ICoreWebView2WebMessageReceivedEventArgs {
36257    pub unsafe fn Source(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
36258        unsafe {
36259            (windows_core::Interface::vtable(self).Source)(
36260                windows_core::Interface::as_raw(self),
36261                value as _,
36262            )
36263            .ok()
36264        }
36265    }
36266    pub unsafe fn WebMessageAsJson(
36267        &self,
36268        value: *mut windows_core::PWSTR,
36269    ) -> windows_core::Result<()> {
36270        unsafe {
36271            (windows_core::Interface::vtable(self).WebMessageAsJson)(
36272                windows_core::Interface::as_raw(self),
36273                value as _,
36274            )
36275            .ok()
36276        }
36277    }
36278    pub unsafe fn TryGetWebMessageAsString(
36279        &self,
36280        value: *mut windows_core::PWSTR,
36281    ) -> windows_core::Result<()> {
36282        unsafe {
36283            (windows_core::Interface::vtable(self).TryGetWebMessageAsString)(
36284                windows_core::Interface::as_raw(self),
36285                value as _,
36286            )
36287            .ok()
36288        }
36289    }
36290}
36291#[repr(C)]
36292#[doc(hidden)]
36293pub struct ICoreWebView2WebMessageReceivedEventArgs_Vtbl {
36294    pub base__: windows_core::IUnknown_Vtbl,
36295    pub Source: unsafe extern "system" fn(
36296        *mut core::ffi::c_void,
36297        *mut windows_core::PWSTR,
36298    ) -> windows_core::HRESULT,
36299    pub WebMessageAsJson: unsafe extern "system" fn(
36300        *mut core::ffi::c_void,
36301        *mut windows_core::PWSTR,
36302    ) -> windows_core::HRESULT,
36303    pub TryGetWebMessageAsString: unsafe extern "system" fn(
36304        *mut core::ffi::c_void,
36305        *mut windows_core::PWSTR,
36306    ) -> windows_core::HRESULT,
36307}
36308pub trait ICoreWebView2WebMessageReceivedEventArgs_Impl: windows_core::IUnknownImpl {
36309    fn Source(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
36310    fn WebMessageAsJson(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
36311    fn TryGetWebMessageAsString(&self, value: *mut windows_core::PWSTR)
36312        -> windows_core::Result<()>;
36313}
36314impl ICoreWebView2WebMessageReceivedEventArgs_Vtbl {
36315    pub const fn new<
36316        Identity: ICoreWebView2WebMessageReceivedEventArgs_Impl,
36317        const OFFSET: isize,
36318    >() -> Self {
36319        unsafe extern "system" fn Source<
36320            Identity: ICoreWebView2WebMessageReceivedEventArgs_Impl,
36321            const OFFSET: isize,
36322        >(
36323            this: *mut core::ffi::c_void,
36324            value: *mut windows_core::PWSTR,
36325        ) -> windows_core::HRESULT {
36326            unsafe {
36327                let this: &Identity =
36328                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36329                ICoreWebView2WebMessageReceivedEventArgs_Impl::Source(
36330                    this,
36331                    core::mem::transmute_copy(&value),
36332                )
36333                .into()
36334            }
36335        }
36336        unsafe extern "system" fn WebMessageAsJson<
36337            Identity: ICoreWebView2WebMessageReceivedEventArgs_Impl,
36338            const OFFSET: isize,
36339        >(
36340            this: *mut core::ffi::c_void,
36341            value: *mut windows_core::PWSTR,
36342        ) -> windows_core::HRESULT {
36343            unsafe {
36344                let this: &Identity =
36345                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36346                ICoreWebView2WebMessageReceivedEventArgs_Impl::WebMessageAsJson(
36347                    this,
36348                    core::mem::transmute_copy(&value),
36349                )
36350                .into()
36351            }
36352        }
36353        unsafe extern "system" fn TryGetWebMessageAsString<
36354            Identity: ICoreWebView2WebMessageReceivedEventArgs_Impl,
36355            const OFFSET: isize,
36356        >(
36357            this: *mut core::ffi::c_void,
36358            value: *mut windows_core::PWSTR,
36359        ) -> windows_core::HRESULT {
36360            unsafe {
36361                let this: &Identity =
36362                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36363                ICoreWebView2WebMessageReceivedEventArgs_Impl::TryGetWebMessageAsString(
36364                    this,
36365                    core::mem::transmute_copy(&value),
36366                )
36367                .into()
36368            }
36369        }
36370        Self {
36371            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36372            Source: Source::<Identity, OFFSET>,
36373            WebMessageAsJson: WebMessageAsJson::<Identity, OFFSET>,
36374            TryGetWebMessageAsString: TryGetWebMessageAsString::<Identity, OFFSET>,
36375        }
36376    }
36377    pub fn matches(iid: &windows_core::GUID) -> bool {
36378        iid == &<ICoreWebView2WebMessageReceivedEventArgs as windows_core::Interface>::IID
36379    }
36380}
36381impl windows_core::RuntimeName for ICoreWebView2WebMessageReceivedEventArgs {}
36382windows_core::imp::define_interface!(
36383    ICoreWebView2WebMessageReceivedEventArgs2,
36384    ICoreWebView2WebMessageReceivedEventArgs2_Vtbl,
36385    0x06fc7ab7_c90c_4297_9389_33ca01cf6d5e
36386);
36387impl core::ops::Deref for ICoreWebView2WebMessageReceivedEventArgs2 {
36388    type Target = ICoreWebView2WebMessageReceivedEventArgs;
36389    fn deref(&self) -> &Self::Target {
36390        unsafe { core::mem::transmute(self) }
36391    }
36392}
36393windows_core::imp::interface_hierarchy!(
36394    ICoreWebView2WebMessageReceivedEventArgs2,
36395    windows_core::IUnknown,
36396    ICoreWebView2WebMessageReceivedEventArgs
36397);
36398impl ICoreWebView2WebMessageReceivedEventArgs2 {
36399    pub unsafe fn AdditionalObjects(
36400        &self,
36401    ) -> windows_core::Result<ICoreWebView2ObjectCollectionView> {
36402        unsafe {
36403            let mut result__ = core::mem::zeroed();
36404            (windows_core::Interface::vtable(self).AdditionalObjects)(
36405                windows_core::Interface::as_raw(self),
36406                &mut result__,
36407            )
36408            .and_then(|| windows_core::Type::from_abi(result__))
36409        }
36410    }
36411}
36412#[repr(C)]
36413#[doc(hidden)]
36414pub struct ICoreWebView2WebMessageReceivedEventArgs2_Vtbl {
36415    pub base__: ICoreWebView2WebMessageReceivedEventArgs_Vtbl,
36416    pub AdditionalObjects: unsafe extern "system" fn(
36417        *mut core::ffi::c_void,
36418        *mut *mut core::ffi::c_void,
36419    ) -> windows_core::HRESULT,
36420}
36421pub trait ICoreWebView2WebMessageReceivedEventArgs2_Impl:
36422    ICoreWebView2WebMessageReceivedEventArgs_Impl
36423{
36424    fn AdditionalObjects(&self) -> windows_core::Result<ICoreWebView2ObjectCollectionView>;
36425}
36426impl ICoreWebView2WebMessageReceivedEventArgs2_Vtbl {
36427    pub const fn new<
36428        Identity: ICoreWebView2WebMessageReceivedEventArgs2_Impl,
36429        const OFFSET: isize,
36430    >() -> Self {
36431        unsafe extern "system" fn AdditionalObjects<
36432            Identity: ICoreWebView2WebMessageReceivedEventArgs2_Impl,
36433            const OFFSET: isize,
36434        >(
36435            this: *mut core::ffi::c_void,
36436            value: *mut *mut core::ffi::c_void,
36437        ) -> windows_core::HRESULT {
36438            unsafe {
36439                let this: &Identity =
36440                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36441                match ICoreWebView2WebMessageReceivedEventArgs2_Impl::AdditionalObjects(this) {
36442                    Ok(ok__) => {
36443                        value.write(core::mem::transmute(ok__));
36444                        windows_core::HRESULT(0)
36445                    }
36446                    Err(err) => err.into(),
36447                }
36448            }
36449        }
36450        Self {
36451            base__: ICoreWebView2WebMessageReceivedEventArgs_Vtbl::new::<Identity, OFFSET>(),
36452            AdditionalObjects: AdditionalObjects::<Identity, OFFSET>,
36453        }
36454    }
36455    pub fn matches(iid: &windows_core::GUID) -> bool {
36456        iid == &<ICoreWebView2WebMessageReceivedEventArgs2 as windows_core::Interface>::IID
36457            || iid == &<ICoreWebView2WebMessageReceivedEventArgs as windows_core::Interface>::IID
36458    }
36459}
36460impl windows_core::RuntimeName for ICoreWebView2WebMessageReceivedEventArgs2 {}
36461windows_core::imp::define_interface!(
36462    ICoreWebView2WebMessageReceivedEventHandler,
36463    ICoreWebView2WebMessageReceivedEventHandler_Vtbl,
36464    0x57213f19_00e6_49fa_8e07_898ea01ecbd2
36465);
36466windows_core::imp::interface_hierarchy!(
36467    ICoreWebView2WebMessageReceivedEventHandler,
36468    windows_core::IUnknown
36469);
36470impl ICoreWebView2WebMessageReceivedEventHandler {
36471    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
36472    where
36473        P0: windows_core::Param<ICoreWebView2>,
36474        P1: windows_core::Param<ICoreWebView2WebMessageReceivedEventArgs>,
36475    {
36476        unsafe {
36477            (windows_core::Interface::vtable(self).Invoke)(
36478                windows_core::Interface::as_raw(self),
36479                sender.param().abi(),
36480                args.param().abi(),
36481            )
36482            .ok()
36483        }
36484    }
36485}
36486#[repr(C)]
36487#[doc(hidden)]
36488pub struct ICoreWebView2WebMessageReceivedEventHandler_Vtbl {
36489    pub base__: windows_core::IUnknown_Vtbl,
36490    pub Invoke: unsafe extern "system" fn(
36491        *mut core::ffi::c_void,
36492        *mut core::ffi::c_void,
36493        *mut core::ffi::c_void,
36494    ) -> windows_core::HRESULT,
36495}
36496pub trait ICoreWebView2WebMessageReceivedEventHandler_Impl: windows_core::IUnknownImpl {
36497    fn Invoke(
36498        &self,
36499        sender: windows_core::Ref<'_, ICoreWebView2>,
36500        args: windows_core::Ref<'_, ICoreWebView2WebMessageReceivedEventArgs>,
36501    ) -> windows_core::Result<()>;
36502}
36503impl ICoreWebView2WebMessageReceivedEventHandler_Vtbl {
36504    pub const fn new<
36505        Identity: ICoreWebView2WebMessageReceivedEventHandler_Impl,
36506        const OFFSET: isize,
36507    >() -> Self {
36508        unsafe extern "system" fn Invoke<
36509            Identity: ICoreWebView2WebMessageReceivedEventHandler_Impl,
36510            const OFFSET: isize,
36511        >(
36512            this: *mut core::ffi::c_void,
36513            sender: *mut core::ffi::c_void,
36514            args: *mut core::ffi::c_void,
36515        ) -> windows_core::HRESULT {
36516            unsafe {
36517                let this: &Identity =
36518                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36519                ICoreWebView2WebMessageReceivedEventHandler_Impl::Invoke(
36520                    this,
36521                    core::mem::transmute_copy(&sender),
36522                    core::mem::transmute_copy(&args),
36523                )
36524                .into()
36525            }
36526        }
36527        Self {
36528            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36529            Invoke: Invoke::<Identity, OFFSET>,
36530        }
36531    }
36532    pub fn matches(iid: &windows_core::GUID) -> bool {
36533        iid == &<ICoreWebView2WebMessageReceivedEventHandler as windows_core::Interface>::IID
36534    }
36535}
36536impl windows_core::RuntimeName for ICoreWebView2WebMessageReceivedEventHandler {}
36537windows_core::imp::define_interface!(
36538    ICoreWebView2WebResourceRequest,
36539    ICoreWebView2WebResourceRequest_Vtbl,
36540    0x97055cd4_512c_4264_8b5f_e3f446cea6a5
36541);
36542windows_core::imp::interface_hierarchy!(ICoreWebView2WebResourceRequest, windows_core::IUnknown);
36543impl ICoreWebView2WebResourceRequest {
36544    pub unsafe fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()> {
36545        unsafe {
36546            (windows_core::Interface::vtable(self).Uri)(
36547                windows_core::Interface::as_raw(self),
36548                uri as _,
36549            )
36550            .ok()
36551        }
36552    }
36553    pub unsafe fn SetUri<P0>(&self, uri: P0) -> windows_core::Result<()>
36554    where
36555        P0: windows_core::Param<windows_core::PCWSTR>,
36556    {
36557        unsafe {
36558            (windows_core::Interface::vtable(self).SetUri)(
36559                windows_core::Interface::as_raw(self),
36560                uri.param().abi(),
36561            )
36562            .ok()
36563        }
36564    }
36565    pub unsafe fn Method(&self, method: *mut windows_core::PWSTR) -> windows_core::Result<()> {
36566        unsafe {
36567            (windows_core::Interface::vtable(self).Method)(
36568                windows_core::Interface::as_raw(self),
36569                method as _,
36570            )
36571            .ok()
36572        }
36573    }
36574    pub unsafe fn SetMethod<P0>(&self, method: P0) -> windows_core::Result<()>
36575    where
36576        P0: windows_core::Param<windows_core::PCWSTR>,
36577    {
36578        unsafe {
36579            (windows_core::Interface::vtable(self).SetMethod)(
36580                windows_core::Interface::as_raw(self),
36581                method.param().abi(),
36582            )
36583            .ok()
36584        }
36585    }
36586    pub unsafe fn Content(&self) -> windows_core::Result<windows::Win32::System::Com::IStream> {
36587        unsafe {
36588            let mut result__ = core::mem::zeroed();
36589            (windows_core::Interface::vtable(self).Content)(
36590                windows_core::Interface::as_raw(self),
36591                &mut result__,
36592            )
36593            .and_then(|| windows_core::Type::from_abi(result__))
36594        }
36595    }
36596    pub unsafe fn SetContent<P0>(&self, content: P0) -> windows_core::Result<()>
36597    where
36598        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
36599    {
36600        unsafe {
36601            (windows_core::Interface::vtable(self).SetContent)(
36602                windows_core::Interface::as_raw(self),
36603                content.param().abi(),
36604            )
36605            .ok()
36606        }
36607    }
36608    pub unsafe fn Headers(&self) -> windows_core::Result<ICoreWebView2HttpRequestHeaders> {
36609        unsafe {
36610            let mut result__ = core::mem::zeroed();
36611            (windows_core::Interface::vtable(self).Headers)(
36612                windows_core::Interface::as_raw(self),
36613                &mut result__,
36614            )
36615            .and_then(|| windows_core::Type::from_abi(result__))
36616        }
36617    }
36618}
36619#[repr(C)]
36620#[doc(hidden)]
36621pub struct ICoreWebView2WebResourceRequest_Vtbl {
36622    pub base__: windows_core::IUnknown_Vtbl,
36623    pub Uri: unsafe extern "system" fn(
36624        *mut core::ffi::c_void,
36625        *mut windows_core::PWSTR,
36626    ) -> windows_core::HRESULT,
36627    pub SetUri: unsafe extern "system" fn(
36628        *mut core::ffi::c_void,
36629        windows_core::PCWSTR,
36630    ) -> windows_core::HRESULT,
36631    pub Method: unsafe extern "system" fn(
36632        *mut core::ffi::c_void,
36633        *mut windows_core::PWSTR,
36634    ) -> windows_core::HRESULT,
36635    pub SetMethod: unsafe extern "system" fn(
36636        *mut core::ffi::c_void,
36637        windows_core::PCWSTR,
36638    ) -> windows_core::HRESULT,
36639    pub Content: unsafe extern "system" fn(
36640        *mut core::ffi::c_void,
36641        *mut *mut core::ffi::c_void,
36642    ) -> windows_core::HRESULT,
36643    pub SetContent: unsafe extern "system" fn(
36644        *mut core::ffi::c_void,
36645        *mut core::ffi::c_void,
36646    ) -> windows_core::HRESULT,
36647    pub Headers: unsafe extern "system" fn(
36648        *mut core::ffi::c_void,
36649        *mut *mut core::ffi::c_void,
36650    ) -> windows_core::HRESULT,
36651}
36652pub trait ICoreWebView2WebResourceRequest_Impl: windows_core::IUnknownImpl {
36653    fn Uri(&self, uri: *mut windows_core::PWSTR) -> windows_core::Result<()>;
36654    fn SetUri(&self, uri: &windows_core::PCWSTR) -> windows_core::Result<()>;
36655    fn Method(&self, method: *mut windows_core::PWSTR) -> windows_core::Result<()>;
36656    fn SetMethod(&self, method: &windows_core::PCWSTR) -> windows_core::Result<()>;
36657    fn Content(&self) -> windows_core::Result<windows::Win32::System::Com::IStream>;
36658    fn SetContent(
36659        &self,
36660        content: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
36661    ) -> windows_core::Result<()>;
36662    fn Headers(&self) -> windows_core::Result<ICoreWebView2HttpRequestHeaders>;
36663}
36664impl ICoreWebView2WebResourceRequest_Vtbl {
36665    pub const fn new<Identity: ICoreWebView2WebResourceRequest_Impl, const OFFSET: isize>() -> Self
36666    {
36667        unsafe extern "system" fn Uri<
36668            Identity: ICoreWebView2WebResourceRequest_Impl,
36669            const OFFSET: isize,
36670        >(
36671            this: *mut core::ffi::c_void,
36672            uri: *mut windows_core::PWSTR,
36673        ) -> windows_core::HRESULT {
36674            unsafe {
36675                let this: &Identity =
36676                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36677                ICoreWebView2WebResourceRequest_Impl::Uri(this, core::mem::transmute_copy(&uri))
36678                    .into()
36679            }
36680        }
36681        unsafe extern "system" fn SetUri<
36682            Identity: ICoreWebView2WebResourceRequest_Impl,
36683            const OFFSET: isize,
36684        >(
36685            this: *mut core::ffi::c_void,
36686            uri: windows_core::PCWSTR,
36687        ) -> windows_core::HRESULT {
36688            unsafe {
36689                let this: &Identity =
36690                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36691                ICoreWebView2WebResourceRequest_Impl::SetUri(this, core::mem::transmute(&uri))
36692                    .into()
36693            }
36694        }
36695        unsafe extern "system" fn Method<
36696            Identity: ICoreWebView2WebResourceRequest_Impl,
36697            const OFFSET: isize,
36698        >(
36699            this: *mut core::ffi::c_void,
36700            method: *mut windows_core::PWSTR,
36701        ) -> windows_core::HRESULT {
36702            unsafe {
36703                let this: &Identity =
36704                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36705                ICoreWebView2WebResourceRequest_Impl::Method(
36706                    this,
36707                    core::mem::transmute_copy(&method),
36708                )
36709                .into()
36710            }
36711        }
36712        unsafe extern "system" fn SetMethod<
36713            Identity: ICoreWebView2WebResourceRequest_Impl,
36714            const OFFSET: isize,
36715        >(
36716            this: *mut core::ffi::c_void,
36717            method: windows_core::PCWSTR,
36718        ) -> windows_core::HRESULT {
36719            unsafe {
36720                let this: &Identity =
36721                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36722                ICoreWebView2WebResourceRequest_Impl::SetMethod(this, core::mem::transmute(&method))
36723                    .into()
36724            }
36725        }
36726        unsafe extern "system" fn Content<
36727            Identity: ICoreWebView2WebResourceRequest_Impl,
36728            const OFFSET: isize,
36729        >(
36730            this: *mut core::ffi::c_void,
36731            content: *mut *mut core::ffi::c_void,
36732        ) -> windows_core::HRESULT {
36733            unsafe {
36734                let this: &Identity =
36735                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36736                match ICoreWebView2WebResourceRequest_Impl::Content(this) {
36737                    Ok(ok__) => {
36738                        content.write(core::mem::transmute(ok__));
36739                        windows_core::HRESULT(0)
36740                    }
36741                    Err(err) => err.into(),
36742                }
36743            }
36744        }
36745        unsafe extern "system" fn SetContent<
36746            Identity: ICoreWebView2WebResourceRequest_Impl,
36747            const OFFSET: isize,
36748        >(
36749            this: *mut core::ffi::c_void,
36750            content: *mut core::ffi::c_void,
36751        ) -> windows_core::HRESULT {
36752            unsafe {
36753                let this: &Identity =
36754                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36755                ICoreWebView2WebResourceRequest_Impl::SetContent(
36756                    this,
36757                    core::mem::transmute_copy(&content),
36758                )
36759                .into()
36760            }
36761        }
36762        unsafe extern "system" fn Headers<
36763            Identity: ICoreWebView2WebResourceRequest_Impl,
36764            const OFFSET: isize,
36765        >(
36766            this: *mut core::ffi::c_void,
36767            headers: *mut *mut core::ffi::c_void,
36768        ) -> windows_core::HRESULT {
36769            unsafe {
36770                let this: &Identity =
36771                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36772                match ICoreWebView2WebResourceRequest_Impl::Headers(this) {
36773                    Ok(ok__) => {
36774                        headers.write(core::mem::transmute(ok__));
36775                        windows_core::HRESULT(0)
36776                    }
36777                    Err(err) => err.into(),
36778                }
36779            }
36780        }
36781        Self {
36782            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36783            Uri: Uri::<Identity, OFFSET>,
36784            SetUri: SetUri::<Identity, OFFSET>,
36785            Method: Method::<Identity, OFFSET>,
36786            SetMethod: SetMethod::<Identity, OFFSET>,
36787            Content: Content::<Identity, OFFSET>,
36788            SetContent: SetContent::<Identity, OFFSET>,
36789            Headers: Headers::<Identity, OFFSET>,
36790        }
36791    }
36792    pub fn matches(iid: &windows_core::GUID) -> bool {
36793        iid == &<ICoreWebView2WebResourceRequest as windows_core::Interface>::IID
36794    }
36795}
36796impl windows_core::RuntimeName for ICoreWebView2WebResourceRequest {}
36797windows_core::imp::define_interface!(
36798    ICoreWebView2WebResourceRequestedEventArgs,
36799    ICoreWebView2WebResourceRequestedEventArgs_Vtbl,
36800    0x453e667f_12c7_49d4_be6d_ddbe7956f57a
36801);
36802windows_core::imp::interface_hierarchy!(
36803    ICoreWebView2WebResourceRequestedEventArgs,
36804    windows_core::IUnknown
36805);
36806impl ICoreWebView2WebResourceRequestedEventArgs {
36807    pub unsafe fn Request(&self) -> windows_core::Result<ICoreWebView2WebResourceRequest> {
36808        unsafe {
36809            let mut result__ = core::mem::zeroed();
36810            (windows_core::Interface::vtable(self).Request)(
36811                windows_core::Interface::as_raw(self),
36812                &mut result__,
36813            )
36814            .and_then(|| windows_core::Type::from_abi(result__))
36815        }
36816    }
36817    pub unsafe fn Response(&self) -> windows_core::Result<ICoreWebView2WebResourceResponse> {
36818        unsafe {
36819            let mut result__ = core::mem::zeroed();
36820            (windows_core::Interface::vtable(self).Response)(
36821                windows_core::Interface::as_raw(self),
36822                &mut result__,
36823            )
36824            .and_then(|| windows_core::Type::from_abi(result__))
36825        }
36826    }
36827    pub unsafe fn SetResponse<P0>(&self, response: P0) -> windows_core::Result<()>
36828    where
36829        P0: windows_core::Param<ICoreWebView2WebResourceResponse>,
36830    {
36831        unsafe {
36832            (windows_core::Interface::vtable(self).SetResponse)(
36833                windows_core::Interface::as_raw(self),
36834                response.param().abi(),
36835            )
36836            .ok()
36837        }
36838    }
36839    pub unsafe fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral> {
36840        unsafe {
36841            let mut result__ = core::mem::zeroed();
36842            (windows_core::Interface::vtable(self).GetDeferral)(
36843                windows_core::Interface::as_raw(self),
36844                &mut result__,
36845            )
36846            .and_then(|| windows_core::Type::from_abi(result__))
36847        }
36848    }
36849    pub unsafe fn ResourceContext(
36850        &self,
36851        context: *mut COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
36852    ) -> windows_core::Result<()> {
36853        unsafe {
36854            (windows_core::Interface::vtable(self).ResourceContext)(
36855                windows_core::Interface::as_raw(self),
36856                context as _,
36857            )
36858            .ok()
36859        }
36860    }
36861}
36862#[repr(C)]
36863#[doc(hidden)]
36864pub struct ICoreWebView2WebResourceRequestedEventArgs_Vtbl {
36865    pub base__: windows_core::IUnknown_Vtbl,
36866    pub Request: unsafe extern "system" fn(
36867        *mut core::ffi::c_void,
36868        *mut *mut core::ffi::c_void,
36869    ) -> windows_core::HRESULT,
36870    pub Response: unsafe extern "system" fn(
36871        *mut core::ffi::c_void,
36872        *mut *mut core::ffi::c_void,
36873    ) -> windows_core::HRESULT,
36874    pub SetResponse: unsafe extern "system" fn(
36875        *mut core::ffi::c_void,
36876        *mut core::ffi::c_void,
36877    ) -> windows_core::HRESULT,
36878    pub GetDeferral: unsafe extern "system" fn(
36879        *mut core::ffi::c_void,
36880        *mut *mut core::ffi::c_void,
36881    ) -> windows_core::HRESULT,
36882    pub ResourceContext: unsafe extern "system" fn(
36883        *mut core::ffi::c_void,
36884        *mut COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
36885    ) -> windows_core::HRESULT,
36886}
36887pub trait ICoreWebView2WebResourceRequestedEventArgs_Impl: windows_core::IUnknownImpl {
36888    fn Request(&self) -> windows_core::Result<ICoreWebView2WebResourceRequest>;
36889    fn Response(&self) -> windows_core::Result<ICoreWebView2WebResourceResponse>;
36890    fn SetResponse(
36891        &self,
36892        response: windows_core::Ref<'_, ICoreWebView2WebResourceResponse>,
36893    ) -> windows_core::Result<()>;
36894    fn GetDeferral(&self) -> windows_core::Result<ICoreWebView2Deferral>;
36895    fn ResourceContext(
36896        &self,
36897        context: *mut COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
36898    ) -> windows_core::Result<()>;
36899}
36900impl ICoreWebView2WebResourceRequestedEventArgs_Vtbl {
36901    pub const fn new<
36902        Identity: ICoreWebView2WebResourceRequestedEventArgs_Impl,
36903        const OFFSET: isize,
36904    >() -> Self {
36905        unsafe extern "system" fn Request<
36906            Identity: ICoreWebView2WebResourceRequestedEventArgs_Impl,
36907            const OFFSET: isize,
36908        >(
36909            this: *mut core::ffi::c_void,
36910            request: *mut *mut core::ffi::c_void,
36911        ) -> windows_core::HRESULT {
36912            unsafe {
36913                let this: &Identity =
36914                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36915                match ICoreWebView2WebResourceRequestedEventArgs_Impl::Request(this) {
36916                    Ok(ok__) => {
36917                        request.write(core::mem::transmute(ok__));
36918                        windows_core::HRESULT(0)
36919                    }
36920                    Err(err) => err.into(),
36921                }
36922            }
36923        }
36924        unsafe extern "system" fn Response<
36925            Identity: ICoreWebView2WebResourceRequestedEventArgs_Impl,
36926            const OFFSET: isize,
36927        >(
36928            this: *mut core::ffi::c_void,
36929            response: *mut *mut core::ffi::c_void,
36930        ) -> windows_core::HRESULT {
36931            unsafe {
36932                let this: &Identity =
36933                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36934                match ICoreWebView2WebResourceRequestedEventArgs_Impl::Response(this) {
36935                    Ok(ok__) => {
36936                        response.write(core::mem::transmute(ok__));
36937                        windows_core::HRESULT(0)
36938                    }
36939                    Err(err) => err.into(),
36940                }
36941            }
36942        }
36943        unsafe extern "system" fn SetResponse<
36944            Identity: ICoreWebView2WebResourceRequestedEventArgs_Impl,
36945            const OFFSET: isize,
36946        >(
36947            this: *mut core::ffi::c_void,
36948            response: *mut core::ffi::c_void,
36949        ) -> windows_core::HRESULT {
36950            unsafe {
36951                let this: &Identity =
36952                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36953                ICoreWebView2WebResourceRequestedEventArgs_Impl::SetResponse(
36954                    this,
36955                    core::mem::transmute_copy(&response),
36956                )
36957                .into()
36958            }
36959        }
36960        unsafe extern "system" fn GetDeferral<
36961            Identity: ICoreWebView2WebResourceRequestedEventArgs_Impl,
36962            const OFFSET: isize,
36963        >(
36964            this: *mut core::ffi::c_void,
36965            deferral: *mut *mut core::ffi::c_void,
36966        ) -> windows_core::HRESULT {
36967            unsafe {
36968                let this: &Identity =
36969                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36970                match ICoreWebView2WebResourceRequestedEventArgs_Impl::GetDeferral(this) {
36971                    Ok(ok__) => {
36972                        deferral.write(core::mem::transmute(ok__));
36973                        windows_core::HRESULT(0)
36974                    }
36975                    Err(err) => err.into(),
36976                }
36977            }
36978        }
36979        unsafe extern "system" fn ResourceContext<
36980            Identity: ICoreWebView2WebResourceRequestedEventArgs_Impl,
36981            const OFFSET: isize,
36982        >(
36983            this: *mut core::ffi::c_void,
36984            context: *mut COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
36985        ) -> windows_core::HRESULT {
36986            unsafe {
36987                let this: &Identity =
36988                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
36989                ICoreWebView2WebResourceRequestedEventArgs_Impl::ResourceContext(
36990                    this,
36991                    core::mem::transmute_copy(&context),
36992                )
36993                .into()
36994            }
36995        }
36996        Self {
36997            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
36998            Request: Request::<Identity, OFFSET>,
36999            Response: Response::<Identity, OFFSET>,
37000            SetResponse: SetResponse::<Identity, OFFSET>,
37001            GetDeferral: GetDeferral::<Identity, OFFSET>,
37002            ResourceContext: ResourceContext::<Identity, OFFSET>,
37003        }
37004    }
37005    pub fn matches(iid: &windows_core::GUID) -> bool {
37006        iid == &<ICoreWebView2WebResourceRequestedEventArgs as windows_core::Interface>::IID
37007    }
37008}
37009impl windows_core::RuntimeName for ICoreWebView2WebResourceRequestedEventArgs {}
37010windows_core::imp::define_interface!(
37011    ICoreWebView2WebResourceRequestedEventArgs2,
37012    ICoreWebView2WebResourceRequestedEventArgs2_Vtbl,
37013    0x9c562c24_b219_4d7f_92f6_b187fbbadd56
37014);
37015impl core::ops::Deref for ICoreWebView2WebResourceRequestedEventArgs2 {
37016    type Target = ICoreWebView2WebResourceRequestedEventArgs;
37017    fn deref(&self) -> &Self::Target {
37018        unsafe { core::mem::transmute(self) }
37019    }
37020}
37021windows_core::imp::interface_hierarchy!(
37022    ICoreWebView2WebResourceRequestedEventArgs2,
37023    windows_core::IUnknown,
37024    ICoreWebView2WebResourceRequestedEventArgs
37025);
37026impl ICoreWebView2WebResourceRequestedEventArgs2 {
37027    pub unsafe fn RequestedSourceKind(
37028        &self,
37029        value: *mut COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
37030    ) -> windows_core::Result<()> {
37031        unsafe {
37032            (windows_core::Interface::vtable(self).RequestedSourceKind)(
37033                windows_core::Interface::as_raw(self),
37034                value as _,
37035            )
37036            .ok()
37037        }
37038    }
37039}
37040#[repr(C)]
37041#[doc(hidden)]
37042pub struct ICoreWebView2WebResourceRequestedEventArgs2_Vtbl {
37043    pub base__: ICoreWebView2WebResourceRequestedEventArgs_Vtbl,
37044    pub RequestedSourceKind: unsafe extern "system" fn(
37045        *mut core::ffi::c_void,
37046        *mut COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
37047    ) -> windows_core::HRESULT,
37048}
37049pub trait ICoreWebView2WebResourceRequestedEventArgs2_Impl:
37050    ICoreWebView2WebResourceRequestedEventArgs_Impl
37051{
37052    fn RequestedSourceKind(
37053        &self,
37054        value: *mut COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
37055    ) -> windows_core::Result<()>;
37056}
37057impl ICoreWebView2WebResourceRequestedEventArgs2_Vtbl {
37058    pub const fn new<
37059        Identity: ICoreWebView2WebResourceRequestedEventArgs2_Impl,
37060        const OFFSET: isize,
37061    >() -> Self {
37062        unsafe extern "system" fn RequestedSourceKind<
37063            Identity: ICoreWebView2WebResourceRequestedEventArgs2_Impl,
37064            const OFFSET: isize,
37065        >(
37066            this: *mut core::ffi::c_void,
37067            value: *mut COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
37068        ) -> windows_core::HRESULT {
37069            unsafe {
37070                let this: &Identity =
37071                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37072                ICoreWebView2WebResourceRequestedEventArgs2_Impl::RequestedSourceKind(
37073                    this,
37074                    core::mem::transmute_copy(&value),
37075                )
37076                .into()
37077            }
37078        }
37079        Self {
37080            base__: ICoreWebView2WebResourceRequestedEventArgs_Vtbl::new::<Identity, OFFSET>(),
37081            RequestedSourceKind: RequestedSourceKind::<Identity, OFFSET>,
37082        }
37083    }
37084    pub fn matches(iid: &windows_core::GUID) -> bool {
37085        iid == &<ICoreWebView2WebResourceRequestedEventArgs2 as windows_core::Interface>::IID
37086            || iid == &<ICoreWebView2WebResourceRequestedEventArgs as windows_core::Interface>::IID
37087    }
37088}
37089impl windows_core::RuntimeName for ICoreWebView2WebResourceRequestedEventArgs2 {}
37090windows_core::imp::define_interface!(
37091    ICoreWebView2WebResourceRequestedEventHandler,
37092    ICoreWebView2WebResourceRequestedEventHandler_Vtbl,
37093    0xab00b74c_15f1_4646_80e8_e76341d25d71
37094);
37095windows_core::imp::interface_hierarchy!(
37096    ICoreWebView2WebResourceRequestedEventHandler,
37097    windows_core::IUnknown
37098);
37099impl ICoreWebView2WebResourceRequestedEventHandler {
37100    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
37101    where
37102        P0: windows_core::Param<ICoreWebView2>,
37103        P1: windows_core::Param<ICoreWebView2WebResourceRequestedEventArgs>,
37104    {
37105        unsafe {
37106            (windows_core::Interface::vtable(self).Invoke)(
37107                windows_core::Interface::as_raw(self),
37108                sender.param().abi(),
37109                args.param().abi(),
37110            )
37111            .ok()
37112        }
37113    }
37114}
37115#[repr(C)]
37116#[doc(hidden)]
37117pub struct ICoreWebView2WebResourceRequestedEventHandler_Vtbl {
37118    pub base__: windows_core::IUnknown_Vtbl,
37119    pub Invoke: unsafe extern "system" fn(
37120        *mut core::ffi::c_void,
37121        *mut core::ffi::c_void,
37122        *mut core::ffi::c_void,
37123    ) -> windows_core::HRESULT,
37124}
37125pub trait ICoreWebView2WebResourceRequestedEventHandler_Impl: windows_core::IUnknownImpl {
37126    fn Invoke(
37127        &self,
37128        sender: windows_core::Ref<'_, ICoreWebView2>,
37129        args: windows_core::Ref<'_, ICoreWebView2WebResourceRequestedEventArgs>,
37130    ) -> windows_core::Result<()>;
37131}
37132impl ICoreWebView2WebResourceRequestedEventHandler_Vtbl {
37133    pub const fn new<
37134        Identity: ICoreWebView2WebResourceRequestedEventHandler_Impl,
37135        const OFFSET: isize,
37136    >() -> Self {
37137        unsafe extern "system" fn Invoke<
37138            Identity: ICoreWebView2WebResourceRequestedEventHandler_Impl,
37139            const OFFSET: isize,
37140        >(
37141            this: *mut core::ffi::c_void,
37142            sender: *mut core::ffi::c_void,
37143            args: *mut core::ffi::c_void,
37144        ) -> windows_core::HRESULT {
37145            unsafe {
37146                let this: &Identity =
37147                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37148                ICoreWebView2WebResourceRequestedEventHandler_Impl::Invoke(
37149                    this,
37150                    core::mem::transmute_copy(&sender),
37151                    core::mem::transmute_copy(&args),
37152                )
37153                .into()
37154            }
37155        }
37156        Self {
37157            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37158            Invoke: Invoke::<Identity, OFFSET>,
37159        }
37160    }
37161    pub fn matches(iid: &windows_core::GUID) -> bool {
37162        iid == &<ICoreWebView2WebResourceRequestedEventHandler as windows_core::Interface>::IID
37163    }
37164}
37165impl windows_core::RuntimeName for ICoreWebView2WebResourceRequestedEventHandler {}
37166windows_core::imp::define_interface!(
37167    ICoreWebView2WebResourceResponse,
37168    ICoreWebView2WebResourceResponse_Vtbl,
37169    0xaafcc94f_fa27_48fd_97df_830ef75aaec9
37170);
37171windows_core::imp::interface_hierarchy!(ICoreWebView2WebResourceResponse, windows_core::IUnknown);
37172impl ICoreWebView2WebResourceResponse {
37173    pub unsafe fn Content(&self) -> windows_core::Result<windows::Win32::System::Com::IStream> {
37174        unsafe {
37175            let mut result__ = core::mem::zeroed();
37176            (windows_core::Interface::vtable(self).Content)(
37177                windows_core::Interface::as_raw(self),
37178                &mut result__,
37179            )
37180            .and_then(|| windows_core::Type::from_abi(result__))
37181        }
37182    }
37183    pub unsafe fn SetContent<P0>(&self, content: P0) -> windows_core::Result<()>
37184    where
37185        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
37186    {
37187        unsafe {
37188            (windows_core::Interface::vtable(self).SetContent)(
37189                windows_core::Interface::as_raw(self),
37190                content.param().abi(),
37191            )
37192            .ok()
37193        }
37194    }
37195    pub unsafe fn Headers(&self) -> windows_core::Result<ICoreWebView2HttpResponseHeaders> {
37196        unsafe {
37197            let mut result__ = core::mem::zeroed();
37198            (windows_core::Interface::vtable(self).Headers)(
37199                windows_core::Interface::as_raw(self),
37200                &mut result__,
37201            )
37202            .and_then(|| windows_core::Type::from_abi(result__))
37203        }
37204    }
37205    pub unsafe fn StatusCode(&self, statuscode: *mut i32) -> windows_core::Result<()> {
37206        unsafe {
37207            (windows_core::Interface::vtable(self).StatusCode)(
37208                windows_core::Interface::as_raw(self),
37209                statuscode as _,
37210            )
37211            .ok()
37212        }
37213    }
37214    pub unsafe fn SetStatusCode(&self, statuscode: i32) -> windows_core::Result<()> {
37215        unsafe {
37216            (windows_core::Interface::vtable(self).SetStatusCode)(
37217                windows_core::Interface::as_raw(self),
37218                statuscode,
37219            )
37220            .ok()
37221        }
37222    }
37223    pub unsafe fn ReasonPhrase(
37224        &self,
37225        reasonphrase: *mut windows_core::PWSTR,
37226    ) -> windows_core::Result<()> {
37227        unsafe {
37228            (windows_core::Interface::vtable(self).ReasonPhrase)(
37229                windows_core::Interface::as_raw(self),
37230                reasonphrase as _,
37231            )
37232            .ok()
37233        }
37234    }
37235    pub unsafe fn SetReasonPhrase<P0>(&self, reasonphrase: P0) -> windows_core::Result<()>
37236    where
37237        P0: windows_core::Param<windows_core::PCWSTR>,
37238    {
37239        unsafe {
37240            (windows_core::Interface::vtable(self).SetReasonPhrase)(
37241                windows_core::Interface::as_raw(self),
37242                reasonphrase.param().abi(),
37243            )
37244            .ok()
37245        }
37246    }
37247}
37248#[repr(C)]
37249#[doc(hidden)]
37250pub struct ICoreWebView2WebResourceResponse_Vtbl {
37251    pub base__: windows_core::IUnknown_Vtbl,
37252    pub Content: unsafe extern "system" fn(
37253        *mut core::ffi::c_void,
37254        *mut *mut core::ffi::c_void,
37255    ) -> windows_core::HRESULT,
37256    pub SetContent: unsafe extern "system" fn(
37257        *mut core::ffi::c_void,
37258        *mut core::ffi::c_void,
37259    ) -> windows_core::HRESULT,
37260    pub Headers: unsafe extern "system" fn(
37261        *mut core::ffi::c_void,
37262        *mut *mut core::ffi::c_void,
37263    ) -> windows_core::HRESULT,
37264    pub StatusCode:
37265        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
37266    pub SetStatusCode:
37267        unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
37268    pub ReasonPhrase: unsafe extern "system" fn(
37269        *mut core::ffi::c_void,
37270        *mut windows_core::PWSTR,
37271    ) -> windows_core::HRESULT,
37272    pub SetReasonPhrase: unsafe extern "system" fn(
37273        *mut core::ffi::c_void,
37274        windows_core::PCWSTR,
37275    ) -> windows_core::HRESULT,
37276}
37277pub trait ICoreWebView2WebResourceResponse_Impl: windows_core::IUnknownImpl {
37278    fn Content(&self) -> windows_core::Result<windows::Win32::System::Com::IStream>;
37279    fn SetContent(
37280        &self,
37281        content: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
37282    ) -> windows_core::Result<()>;
37283    fn Headers(&self) -> windows_core::Result<ICoreWebView2HttpResponseHeaders>;
37284    fn StatusCode(&self, statuscode: *mut i32) -> windows_core::Result<()>;
37285    fn SetStatusCode(&self, statuscode: i32) -> windows_core::Result<()>;
37286    fn ReasonPhrase(&self, reasonphrase: *mut windows_core::PWSTR) -> windows_core::Result<()>;
37287    fn SetReasonPhrase(&self, reasonphrase: &windows_core::PCWSTR) -> windows_core::Result<()>;
37288}
37289impl ICoreWebView2WebResourceResponse_Vtbl {
37290    pub const fn new<Identity: ICoreWebView2WebResourceResponse_Impl, const OFFSET: isize>() -> Self
37291    {
37292        unsafe extern "system" fn Content<
37293            Identity: ICoreWebView2WebResourceResponse_Impl,
37294            const OFFSET: isize,
37295        >(
37296            this: *mut core::ffi::c_void,
37297            content: *mut *mut core::ffi::c_void,
37298        ) -> windows_core::HRESULT {
37299            unsafe {
37300                let this: &Identity =
37301                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37302                match ICoreWebView2WebResourceResponse_Impl::Content(this) {
37303                    Ok(ok__) => {
37304                        content.write(core::mem::transmute(ok__));
37305                        windows_core::HRESULT(0)
37306                    }
37307                    Err(err) => err.into(),
37308                }
37309            }
37310        }
37311        unsafe extern "system" fn SetContent<
37312            Identity: ICoreWebView2WebResourceResponse_Impl,
37313            const OFFSET: isize,
37314        >(
37315            this: *mut core::ffi::c_void,
37316            content: *mut core::ffi::c_void,
37317        ) -> windows_core::HRESULT {
37318            unsafe {
37319                let this: &Identity =
37320                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37321                ICoreWebView2WebResourceResponse_Impl::SetContent(
37322                    this,
37323                    core::mem::transmute_copy(&content),
37324                )
37325                .into()
37326            }
37327        }
37328        unsafe extern "system" fn Headers<
37329            Identity: ICoreWebView2WebResourceResponse_Impl,
37330            const OFFSET: isize,
37331        >(
37332            this: *mut core::ffi::c_void,
37333            headers: *mut *mut core::ffi::c_void,
37334        ) -> windows_core::HRESULT {
37335            unsafe {
37336                let this: &Identity =
37337                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37338                match ICoreWebView2WebResourceResponse_Impl::Headers(this) {
37339                    Ok(ok__) => {
37340                        headers.write(core::mem::transmute(ok__));
37341                        windows_core::HRESULT(0)
37342                    }
37343                    Err(err) => err.into(),
37344                }
37345            }
37346        }
37347        unsafe extern "system" fn StatusCode<
37348            Identity: ICoreWebView2WebResourceResponse_Impl,
37349            const OFFSET: isize,
37350        >(
37351            this: *mut core::ffi::c_void,
37352            statuscode: *mut i32,
37353        ) -> windows_core::HRESULT {
37354            unsafe {
37355                let this: &Identity =
37356                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37357                ICoreWebView2WebResourceResponse_Impl::StatusCode(
37358                    this,
37359                    core::mem::transmute_copy(&statuscode),
37360                )
37361                .into()
37362            }
37363        }
37364        unsafe extern "system" fn SetStatusCode<
37365            Identity: ICoreWebView2WebResourceResponse_Impl,
37366            const OFFSET: isize,
37367        >(
37368            this: *mut core::ffi::c_void,
37369            statuscode: i32,
37370        ) -> windows_core::HRESULT {
37371            unsafe {
37372                let this: &Identity =
37373                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37374                ICoreWebView2WebResourceResponse_Impl::SetStatusCode(
37375                    this,
37376                    core::mem::transmute_copy(&statuscode),
37377                )
37378                .into()
37379            }
37380        }
37381        unsafe extern "system" fn ReasonPhrase<
37382            Identity: ICoreWebView2WebResourceResponse_Impl,
37383            const OFFSET: isize,
37384        >(
37385            this: *mut core::ffi::c_void,
37386            reasonphrase: *mut windows_core::PWSTR,
37387        ) -> windows_core::HRESULT {
37388            unsafe {
37389                let this: &Identity =
37390                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37391                ICoreWebView2WebResourceResponse_Impl::ReasonPhrase(
37392                    this,
37393                    core::mem::transmute_copy(&reasonphrase),
37394                )
37395                .into()
37396            }
37397        }
37398        unsafe extern "system" fn SetReasonPhrase<
37399            Identity: ICoreWebView2WebResourceResponse_Impl,
37400            const OFFSET: isize,
37401        >(
37402            this: *mut core::ffi::c_void,
37403            reasonphrase: windows_core::PCWSTR,
37404        ) -> windows_core::HRESULT {
37405            unsafe {
37406                let this: &Identity =
37407                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37408                ICoreWebView2WebResourceResponse_Impl::SetReasonPhrase(
37409                    this,
37410                    core::mem::transmute(&reasonphrase),
37411                )
37412                .into()
37413            }
37414        }
37415        Self {
37416            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37417            Content: Content::<Identity, OFFSET>,
37418            SetContent: SetContent::<Identity, OFFSET>,
37419            Headers: Headers::<Identity, OFFSET>,
37420            StatusCode: StatusCode::<Identity, OFFSET>,
37421            SetStatusCode: SetStatusCode::<Identity, OFFSET>,
37422            ReasonPhrase: ReasonPhrase::<Identity, OFFSET>,
37423            SetReasonPhrase: SetReasonPhrase::<Identity, OFFSET>,
37424        }
37425    }
37426    pub fn matches(iid: &windows_core::GUID) -> bool {
37427        iid == &<ICoreWebView2WebResourceResponse as windows_core::Interface>::IID
37428    }
37429}
37430impl windows_core::RuntimeName for ICoreWebView2WebResourceResponse {}
37431windows_core::imp::define_interface!(
37432    ICoreWebView2WebResourceResponseReceivedEventArgs,
37433    ICoreWebView2WebResourceResponseReceivedEventArgs_Vtbl,
37434    0xd1db483d_6796_4b8b_80fc_13712bb716f4
37435);
37436windows_core::imp::interface_hierarchy!(
37437    ICoreWebView2WebResourceResponseReceivedEventArgs,
37438    windows_core::IUnknown
37439);
37440impl ICoreWebView2WebResourceResponseReceivedEventArgs {
37441    pub unsafe fn Request(&self) -> windows_core::Result<ICoreWebView2WebResourceRequest> {
37442        unsafe {
37443            let mut result__ = core::mem::zeroed();
37444            (windows_core::Interface::vtable(self).Request)(
37445                windows_core::Interface::as_raw(self),
37446                &mut result__,
37447            )
37448            .and_then(|| windows_core::Type::from_abi(result__))
37449        }
37450    }
37451    pub unsafe fn Response(&self) -> windows_core::Result<ICoreWebView2WebResourceResponseView> {
37452        unsafe {
37453            let mut result__ = core::mem::zeroed();
37454            (windows_core::Interface::vtable(self).Response)(
37455                windows_core::Interface::as_raw(self),
37456                &mut result__,
37457            )
37458            .and_then(|| windows_core::Type::from_abi(result__))
37459        }
37460    }
37461}
37462#[repr(C)]
37463#[doc(hidden)]
37464pub struct ICoreWebView2WebResourceResponseReceivedEventArgs_Vtbl {
37465    pub base__: windows_core::IUnknown_Vtbl,
37466    pub Request: unsafe extern "system" fn(
37467        *mut core::ffi::c_void,
37468        *mut *mut core::ffi::c_void,
37469    ) -> windows_core::HRESULT,
37470    pub Response: unsafe extern "system" fn(
37471        *mut core::ffi::c_void,
37472        *mut *mut core::ffi::c_void,
37473    ) -> windows_core::HRESULT,
37474}
37475pub trait ICoreWebView2WebResourceResponseReceivedEventArgs_Impl:
37476    windows_core::IUnknownImpl
37477{
37478    fn Request(&self) -> windows_core::Result<ICoreWebView2WebResourceRequest>;
37479    fn Response(&self) -> windows_core::Result<ICoreWebView2WebResourceResponseView>;
37480}
37481impl ICoreWebView2WebResourceResponseReceivedEventArgs_Vtbl {
37482    pub const fn new<
37483        Identity: ICoreWebView2WebResourceResponseReceivedEventArgs_Impl,
37484        const OFFSET: isize,
37485    >() -> Self {
37486        unsafe extern "system" fn Request<
37487            Identity: ICoreWebView2WebResourceResponseReceivedEventArgs_Impl,
37488            const OFFSET: isize,
37489        >(
37490            this: *mut core::ffi::c_void,
37491            value: *mut *mut core::ffi::c_void,
37492        ) -> windows_core::HRESULT {
37493            unsafe {
37494                let this: &Identity =
37495                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37496                match ICoreWebView2WebResourceResponseReceivedEventArgs_Impl::Request(this) {
37497                    Ok(ok__) => {
37498                        value.write(core::mem::transmute(ok__));
37499                        windows_core::HRESULT(0)
37500                    }
37501                    Err(err) => err.into(),
37502                }
37503            }
37504        }
37505        unsafe extern "system" fn Response<
37506            Identity: ICoreWebView2WebResourceResponseReceivedEventArgs_Impl,
37507            const OFFSET: isize,
37508        >(
37509            this: *mut core::ffi::c_void,
37510            value: *mut *mut core::ffi::c_void,
37511        ) -> windows_core::HRESULT {
37512            unsafe {
37513                let this: &Identity =
37514                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37515                match ICoreWebView2WebResourceResponseReceivedEventArgs_Impl::Response(this) {
37516                    Ok(ok__) => {
37517                        value.write(core::mem::transmute(ok__));
37518                        windows_core::HRESULT(0)
37519                    }
37520                    Err(err) => err.into(),
37521                }
37522            }
37523        }
37524        Self {
37525            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37526            Request: Request::<Identity, OFFSET>,
37527            Response: Response::<Identity, OFFSET>,
37528        }
37529    }
37530    pub fn matches(iid: &windows_core::GUID) -> bool {
37531        iid == &<ICoreWebView2WebResourceResponseReceivedEventArgs as windows_core::Interface>::IID
37532    }
37533}
37534impl windows_core::RuntimeName for ICoreWebView2WebResourceResponseReceivedEventArgs {}
37535windows_core::imp::define_interface!(
37536    ICoreWebView2WebResourceResponseReceivedEventHandler,
37537    ICoreWebView2WebResourceResponseReceivedEventHandler_Vtbl,
37538    0x7de9898a_24f5_40c3_a2de_d4f458e69828
37539);
37540windows_core::imp::interface_hierarchy!(
37541    ICoreWebView2WebResourceResponseReceivedEventHandler,
37542    windows_core::IUnknown
37543);
37544impl ICoreWebView2WebResourceResponseReceivedEventHandler {
37545    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
37546    where
37547        P0: windows_core::Param<ICoreWebView2>,
37548        P1: windows_core::Param<ICoreWebView2WebResourceResponseReceivedEventArgs>,
37549    {
37550        unsafe {
37551            (windows_core::Interface::vtable(self).Invoke)(
37552                windows_core::Interface::as_raw(self),
37553                sender.param().abi(),
37554                args.param().abi(),
37555            )
37556            .ok()
37557        }
37558    }
37559}
37560#[repr(C)]
37561#[doc(hidden)]
37562pub struct ICoreWebView2WebResourceResponseReceivedEventHandler_Vtbl {
37563    pub base__: windows_core::IUnknown_Vtbl,
37564    pub Invoke: unsafe extern "system" fn(
37565        *mut core::ffi::c_void,
37566        *mut core::ffi::c_void,
37567        *mut core::ffi::c_void,
37568    ) -> windows_core::HRESULT,
37569}
37570pub trait ICoreWebView2WebResourceResponseReceivedEventHandler_Impl:
37571    windows_core::IUnknownImpl
37572{
37573    fn Invoke(
37574        &self,
37575        sender: windows_core::Ref<'_, ICoreWebView2>,
37576        args: windows_core::Ref<'_, ICoreWebView2WebResourceResponseReceivedEventArgs>,
37577    ) -> windows_core::Result<()>;
37578}
37579impl ICoreWebView2WebResourceResponseReceivedEventHandler_Vtbl {
37580    pub const fn new<
37581        Identity: ICoreWebView2WebResourceResponseReceivedEventHandler_Impl,
37582        const OFFSET: isize,
37583    >() -> Self {
37584        unsafe extern "system" fn Invoke<
37585            Identity: ICoreWebView2WebResourceResponseReceivedEventHandler_Impl,
37586            const OFFSET: isize,
37587        >(
37588            this: *mut core::ffi::c_void,
37589            sender: *mut core::ffi::c_void,
37590            args: *mut core::ffi::c_void,
37591        ) -> windows_core::HRESULT {
37592            unsafe {
37593                let this: &Identity =
37594                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37595                ICoreWebView2WebResourceResponseReceivedEventHandler_Impl::Invoke(
37596                    this,
37597                    core::mem::transmute_copy(&sender),
37598                    core::mem::transmute_copy(&args),
37599                )
37600                .into()
37601            }
37602        }
37603        Self {
37604            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37605            Invoke: Invoke::<Identity, OFFSET>,
37606        }
37607    }
37608    pub fn matches(iid: &windows_core::GUID) -> bool {
37609        iid == & < ICoreWebView2WebResourceResponseReceivedEventHandler as windows_core::Interface >::IID
37610    }
37611}
37612impl windows_core::RuntimeName for ICoreWebView2WebResourceResponseReceivedEventHandler {}
37613windows_core::imp::define_interface!(
37614    ICoreWebView2WebResourceResponseView,
37615    ICoreWebView2WebResourceResponseView_Vtbl,
37616    0x79701053_7759_4162_8f7d_f1b3f084928d
37617);
37618windows_core::imp::interface_hierarchy!(
37619    ICoreWebView2WebResourceResponseView,
37620    windows_core::IUnknown
37621);
37622impl ICoreWebView2WebResourceResponseView {
37623    pub unsafe fn Headers(&self) -> windows_core::Result<ICoreWebView2HttpResponseHeaders> {
37624        unsafe {
37625            let mut result__ = core::mem::zeroed();
37626            (windows_core::Interface::vtable(self).Headers)(
37627                windows_core::Interface::as_raw(self),
37628                &mut result__,
37629            )
37630            .and_then(|| windows_core::Type::from_abi(result__))
37631        }
37632    }
37633    pub unsafe fn StatusCode(&self, statuscode: *mut i32) -> windows_core::Result<()> {
37634        unsafe {
37635            (windows_core::Interface::vtable(self).StatusCode)(
37636                windows_core::Interface::as_raw(self),
37637                statuscode as _,
37638            )
37639            .ok()
37640        }
37641    }
37642    pub unsafe fn ReasonPhrase(
37643        &self,
37644        reasonphrase: *mut windows_core::PWSTR,
37645    ) -> windows_core::Result<()> {
37646        unsafe {
37647            (windows_core::Interface::vtable(self).ReasonPhrase)(
37648                windows_core::Interface::as_raw(self),
37649                reasonphrase as _,
37650            )
37651            .ok()
37652        }
37653    }
37654    pub unsafe fn GetContent<P0>(&self, handler: P0) -> windows_core::Result<()>
37655    where
37656        P0: windows_core::Param<ICoreWebView2WebResourceResponseViewGetContentCompletedHandler>,
37657    {
37658        unsafe {
37659            (windows_core::Interface::vtable(self).GetContent)(
37660                windows_core::Interface::as_raw(self),
37661                handler.param().abi(),
37662            )
37663            .ok()
37664        }
37665    }
37666}
37667#[repr(C)]
37668#[doc(hidden)]
37669pub struct ICoreWebView2WebResourceResponseView_Vtbl {
37670    pub base__: windows_core::IUnknown_Vtbl,
37671    pub Headers: unsafe extern "system" fn(
37672        *mut core::ffi::c_void,
37673        *mut *mut core::ffi::c_void,
37674    ) -> windows_core::HRESULT,
37675    pub StatusCode:
37676        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
37677    pub ReasonPhrase: unsafe extern "system" fn(
37678        *mut core::ffi::c_void,
37679        *mut windows_core::PWSTR,
37680    ) -> windows_core::HRESULT,
37681    pub GetContent: unsafe extern "system" fn(
37682        *mut core::ffi::c_void,
37683        *mut core::ffi::c_void,
37684    ) -> windows_core::HRESULT,
37685}
37686pub trait ICoreWebView2WebResourceResponseView_Impl: windows_core::IUnknownImpl {
37687    fn Headers(&self) -> windows_core::Result<ICoreWebView2HttpResponseHeaders>;
37688    fn StatusCode(&self, statuscode: *mut i32) -> windows_core::Result<()>;
37689    fn ReasonPhrase(&self, reasonphrase: *mut windows_core::PWSTR) -> windows_core::Result<()>;
37690    fn GetContent(
37691        &self,
37692        handler: windows_core::Ref<
37693            '_,
37694            ICoreWebView2WebResourceResponseViewGetContentCompletedHandler,
37695        >,
37696    ) -> windows_core::Result<()>;
37697}
37698impl ICoreWebView2WebResourceResponseView_Vtbl {
37699    pub const fn new<Identity: ICoreWebView2WebResourceResponseView_Impl, const OFFSET: isize>(
37700    ) -> Self {
37701        unsafe extern "system" fn Headers<
37702            Identity: ICoreWebView2WebResourceResponseView_Impl,
37703            const OFFSET: isize,
37704        >(
37705            this: *mut core::ffi::c_void,
37706            headers: *mut *mut core::ffi::c_void,
37707        ) -> windows_core::HRESULT {
37708            unsafe {
37709                let this: &Identity =
37710                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37711                match ICoreWebView2WebResourceResponseView_Impl::Headers(this) {
37712                    Ok(ok__) => {
37713                        headers.write(core::mem::transmute(ok__));
37714                        windows_core::HRESULT(0)
37715                    }
37716                    Err(err) => err.into(),
37717                }
37718            }
37719        }
37720        unsafe extern "system" fn StatusCode<
37721            Identity: ICoreWebView2WebResourceResponseView_Impl,
37722            const OFFSET: isize,
37723        >(
37724            this: *mut core::ffi::c_void,
37725            statuscode: *mut i32,
37726        ) -> windows_core::HRESULT {
37727            unsafe {
37728                let this: &Identity =
37729                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37730                ICoreWebView2WebResourceResponseView_Impl::StatusCode(
37731                    this,
37732                    core::mem::transmute_copy(&statuscode),
37733                )
37734                .into()
37735            }
37736        }
37737        unsafe extern "system" fn ReasonPhrase<
37738            Identity: ICoreWebView2WebResourceResponseView_Impl,
37739            const OFFSET: isize,
37740        >(
37741            this: *mut core::ffi::c_void,
37742            reasonphrase: *mut windows_core::PWSTR,
37743        ) -> windows_core::HRESULT {
37744            unsafe {
37745                let this: &Identity =
37746                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37747                ICoreWebView2WebResourceResponseView_Impl::ReasonPhrase(
37748                    this,
37749                    core::mem::transmute_copy(&reasonphrase),
37750                )
37751                .into()
37752            }
37753        }
37754        unsafe extern "system" fn GetContent<
37755            Identity: ICoreWebView2WebResourceResponseView_Impl,
37756            const OFFSET: isize,
37757        >(
37758            this: *mut core::ffi::c_void,
37759            handler: *mut core::ffi::c_void,
37760        ) -> windows_core::HRESULT {
37761            unsafe {
37762                let this: &Identity =
37763                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37764                ICoreWebView2WebResourceResponseView_Impl::GetContent(
37765                    this,
37766                    core::mem::transmute_copy(&handler),
37767                )
37768                .into()
37769            }
37770        }
37771        Self {
37772            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37773            Headers: Headers::<Identity, OFFSET>,
37774            StatusCode: StatusCode::<Identity, OFFSET>,
37775            ReasonPhrase: ReasonPhrase::<Identity, OFFSET>,
37776            GetContent: GetContent::<Identity, OFFSET>,
37777        }
37778    }
37779    pub fn matches(iid: &windows_core::GUID) -> bool {
37780        iid == &<ICoreWebView2WebResourceResponseView as windows_core::Interface>::IID
37781    }
37782}
37783impl windows_core::RuntimeName for ICoreWebView2WebResourceResponseView {}
37784windows_core::imp::define_interface!(
37785    ICoreWebView2WebResourceResponseViewGetContentCompletedHandler,
37786    ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Vtbl,
37787    0x875738e1_9fa2_40e3_8b74_2e8972dd6fe7
37788);
37789windows_core::imp::interface_hierarchy!(
37790    ICoreWebView2WebResourceResponseViewGetContentCompletedHandler,
37791    windows_core::IUnknown
37792);
37793impl ICoreWebView2WebResourceResponseViewGetContentCompletedHandler {
37794    pub unsafe fn Invoke<P1>(
37795        &self,
37796        errorcode: windows_core::HRESULT,
37797        result: P1,
37798    ) -> windows_core::Result<()>
37799    where
37800        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
37801    {
37802        unsafe {
37803            (windows_core::Interface::vtable(self).Invoke)(
37804                windows_core::Interface::as_raw(self),
37805                errorcode,
37806                result.param().abi(),
37807            )
37808            .ok()
37809        }
37810    }
37811}
37812#[repr(C)]
37813#[doc(hidden)]
37814pub struct ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Vtbl {
37815    pub base__: windows_core::IUnknown_Vtbl,
37816    pub Invoke: unsafe extern "system" fn(
37817        *mut core::ffi::c_void,
37818        windows_core::HRESULT,
37819        *mut core::ffi::c_void,
37820    ) -> windows_core::HRESULT,
37821}
37822pub trait ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Impl:
37823    windows_core::IUnknownImpl
37824{
37825    fn Invoke(
37826        &self,
37827        errorcode: windows_core::HRESULT,
37828        result: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
37829    ) -> windows_core::Result<()>;
37830}
37831impl ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Vtbl {
37832    pub const fn new<
37833        Identity: ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Impl,
37834        const OFFSET: isize,
37835    >() -> Self {
37836        unsafe extern "system" fn Invoke<
37837            Identity: ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Impl,
37838            const OFFSET: isize,
37839        >(
37840            this: *mut core::ffi::c_void,
37841            errorcode: windows_core::HRESULT,
37842            result: *mut core::ffi::c_void,
37843        ) -> windows_core::HRESULT {
37844            unsafe {
37845                let this: &Identity =
37846                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37847                ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Impl::Invoke(
37848                    this,
37849                    core::mem::transmute_copy(&errorcode),
37850                    core::mem::transmute_copy(&result),
37851                )
37852                .into()
37853            }
37854        }
37855        Self {
37856            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37857            Invoke: Invoke::<Identity, OFFSET>,
37858        }
37859    }
37860    pub fn matches(iid: &windows_core::GUID) -> bool {
37861        iid == & < ICoreWebView2WebResourceResponseViewGetContentCompletedHandler as windows_core::Interface >::IID
37862    }
37863}
37864impl windows_core::RuntimeName for ICoreWebView2WebResourceResponseViewGetContentCompletedHandler {}
37865windows_core::imp::define_interface!(
37866    ICoreWebView2WindowCloseRequestedEventHandler,
37867    ICoreWebView2WindowCloseRequestedEventHandler_Vtbl,
37868    0x5c19e9e0_092f_486b_affa_ca8231913039
37869);
37870windows_core::imp::interface_hierarchy!(
37871    ICoreWebView2WindowCloseRequestedEventHandler,
37872    windows_core::IUnknown
37873);
37874impl ICoreWebView2WindowCloseRequestedEventHandler {
37875    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
37876    where
37877        P0: windows_core::Param<ICoreWebView2>,
37878        P1: windows_core::Param<windows_core::IUnknown>,
37879    {
37880        unsafe {
37881            (windows_core::Interface::vtable(self).Invoke)(
37882                windows_core::Interface::as_raw(self),
37883                sender.param().abi(),
37884                args.param().abi(),
37885            )
37886            .ok()
37887        }
37888    }
37889}
37890#[repr(C)]
37891#[doc(hidden)]
37892pub struct ICoreWebView2WindowCloseRequestedEventHandler_Vtbl {
37893    pub base__: windows_core::IUnknown_Vtbl,
37894    pub Invoke: unsafe extern "system" fn(
37895        *mut core::ffi::c_void,
37896        *mut core::ffi::c_void,
37897        *mut core::ffi::c_void,
37898    ) -> windows_core::HRESULT,
37899}
37900pub trait ICoreWebView2WindowCloseRequestedEventHandler_Impl: windows_core::IUnknownImpl {
37901    fn Invoke(
37902        &self,
37903        sender: windows_core::Ref<'_, ICoreWebView2>,
37904        args: windows_core::Ref<'_, windows_core::IUnknown>,
37905    ) -> windows_core::Result<()>;
37906}
37907impl ICoreWebView2WindowCloseRequestedEventHandler_Vtbl {
37908    pub const fn new<
37909        Identity: ICoreWebView2WindowCloseRequestedEventHandler_Impl,
37910        const OFFSET: isize,
37911    >() -> Self {
37912        unsafe extern "system" fn Invoke<
37913            Identity: ICoreWebView2WindowCloseRequestedEventHandler_Impl,
37914            const OFFSET: isize,
37915        >(
37916            this: *mut core::ffi::c_void,
37917            sender: *mut core::ffi::c_void,
37918            args: *mut core::ffi::c_void,
37919        ) -> windows_core::HRESULT {
37920            unsafe {
37921                let this: &Identity =
37922                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
37923                ICoreWebView2WindowCloseRequestedEventHandler_Impl::Invoke(
37924                    this,
37925                    core::mem::transmute_copy(&sender),
37926                    core::mem::transmute_copy(&args),
37927                )
37928                .into()
37929            }
37930        }
37931        Self {
37932            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
37933            Invoke: Invoke::<Identity, OFFSET>,
37934        }
37935    }
37936    pub fn matches(iid: &windows_core::GUID) -> bool {
37937        iid == &<ICoreWebView2WindowCloseRequestedEventHandler as windows_core::Interface>::IID
37938    }
37939}
37940impl windows_core::RuntimeName for ICoreWebView2WindowCloseRequestedEventHandler {}
37941windows_core::imp::define_interface!(
37942    ICoreWebView2WindowFeatures,
37943    ICoreWebView2WindowFeatures_Vtbl,
37944    0x5eaf559f_b46e_4397_8860_e422f287ff1e
37945);
37946windows_core::imp::interface_hierarchy!(ICoreWebView2WindowFeatures, windows_core::IUnknown);
37947impl ICoreWebView2WindowFeatures {
37948    pub unsafe fn HasPosition(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
37949        unsafe {
37950            (windows_core::Interface::vtable(self).HasPosition)(
37951                windows_core::Interface::as_raw(self),
37952                value as _,
37953            )
37954            .ok()
37955        }
37956    }
37957    pub unsafe fn HasSize(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
37958        unsafe {
37959            (windows_core::Interface::vtable(self).HasSize)(
37960                windows_core::Interface::as_raw(self),
37961                value as _,
37962            )
37963            .ok()
37964        }
37965    }
37966    pub unsafe fn Left(&self, value: *mut u32) -> windows_core::Result<()> {
37967        unsafe {
37968            (windows_core::Interface::vtable(self).Left)(
37969                windows_core::Interface::as_raw(self),
37970                value as _,
37971            )
37972            .ok()
37973        }
37974    }
37975    pub unsafe fn Top(&self, value: *mut u32) -> windows_core::Result<()> {
37976        unsafe {
37977            (windows_core::Interface::vtable(self).Top)(
37978                windows_core::Interface::as_raw(self),
37979                value as _,
37980            )
37981            .ok()
37982        }
37983    }
37984    pub unsafe fn Height(&self, value: *mut u32) -> windows_core::Result<()> {
37985        unsafe {
37986            (windows_core::Interface::vtable(self).Height)(
37987                windows_core::Interface::as_raw(self),
37988                value as _,
37989            )
37990            .ok()
37991        }
37992    }
37993    pub unsafe fn Width(&self, value: *mut u32) -> windows_core::Result<()> {
37994        unsafe {
37995            (windows_core::Interface::vtable(self).Width)(
37996                windows_core::Interface::as_raw(self),
37997                value as _,
37998            )
37999            .ok()
38000        }
38001    }
38002    pub unsafe fn ShouldDisplayMenuBar(
38003        &self,
38004        value: *mut windows_core::BOOL,
38005    ) -> windows_core::Result<()> {
38006        unsafe {
38007            (windows_core::Interface::vtable(self).ShouldDisplayMenuBar)(
38008                windows_core::Interface::as_raw(self),
38009                value as _,
38010            )
38011            .ok()
38012        }
38013    }
38014    pub unsafe fn ShouldDisplayStatus(
38015        &self,
38016        value: *mut windows_core::BOOL,
38017    ) -> windows_core::Result<()> {
38018        unsafe {
38019            (windows_core::Interface::vtable(self).ShouldDisplayStatus)(
38020                windows_core::Interface::as_raw(self),
38021                value as _,
38022            )
38023            .ok()
38024        }
38025    }
38026    pub unsafe fn ShouldDisplayToolbar(
38027        &self,
38028        value: *mut windows_core::BOOL,
38029    ) -> windows_core::Result<()> {
38030        unsafe {
38031            (windows_core::Interface::vtable(self).ShouldDisplayToolbar)(
38032                windows_core::Interface::as_raw(self),
38033                value as _,
38034            )
38035            .ok()
38036        }
38037    }
38038    pub unsafe fn ShouldDisplayScrollBars(
38039        &self,
38040        value: *mut windows_core::BOOL,
38041    ) -> windows_core::Result<()> {
38042        unsafe {
38043            (windows_core::Interface::vtable(self).ShouldDisplayScrollBars)(
38044                windows_core::Interface::as_raw(self),
38045                value as _,
38046            )
38047            .ok()
38048        }
38049    }
38050}
38051#[repr(C)]
38052#[doc(hidden)]
38053pub struct ICoreWebView2WindowFeatures_Vtbl {
38054    pub base__: windows_core::IUnknown_Vtbl,
38055    pub HasPosition: unsafe extern "system" fn(
38056        *mut core::ffi::c_void,
38057        *mut windows_core::BOOL,
38058    ) -> windows_core::HRESULT,
38059    pub HasSize: unsafe extern "system" fn(
38060        *mut core::ffi::c_void,
38061        *mut windows_core::BOOL,
38062    ) -> windows_core::HRESULT,
38063    pub Left: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
38064    pub Top: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
38065    pub Height:
38066        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
38067    pub Width: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
38068    pub ShouldDisplayMenuBar: unsafe extern "system" fn(
38069        *mut core::ffi::c_void,
38070        *mut windows_core::BOOL,
38071    ) -> windows_core::HRESULT,
38072    pub ShouldDisplayStatus: unsafe extern "system" fn(
38073        *mut core::ffi::c_void,
38074        *mut windows_core::BOOL,
38075    ) -> windows_core::HRESULT,
38076    pub ShouldDisplayToolbar: unsafe extern "system" fn(
38077        *mut core::ffi::c_void,
38078        *mut windows_core::BOOL,
38079    ) -> windows_core::HRESULT,
38080    pub ShouldDisplayScrollBars: unsafe extern "system" fn(
38081        *mut core::ffi::c_void,
38082        *mut windows_core::BOOL,
38083    ) -> windows_core::HRESULT,
38084}
38085pub trait ICoreWebView2WindowFeatures_Impl: windows_core::IUnknownImpl {
38086    fn HasPosition(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
38087    fn HasSize(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
38088    fn Left(&self, value: *mut u32) -> windows_core::Result<()>;
38089    fn Top(&self, value: *mut u32) -> windows_core::Result<()>;
38090    fn Height(&self, value: *mut u32) -> windows_core::Result<()>;
38091    fn Width(&self, value: *mut u32) -> windows_core::Result<()>;
38092    fn ShouldDisplayMenuBar(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
38093    fn ShouldDisplayStatus(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
38094    fn ShouldDisplayToolbar(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
38095    fn ShouldDisplayScrollBars(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
38096}
38097impl ICoreWebView2WindowFeatures_Vtbl {
38098    pub const fn new<Identity: ICoreWebView2WindowFeatures_Impl, const OFFSET: isize>() -> Self {
38099        unsafe extern "system" fn HasPosition<
38100            Identity: ICoreWebView2WindowFeatures_Impl,
38101            const OFFSET: isize,
38102        >(
38103            this: *mut core::ffi::c_void,
38104            value: *mut windows_core::BOOL,
38105        ) -> windows_core::HRESULT {
38106            unsafe {
38107                let this: &Identity =
38108                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38109                ICoreWebView2WindowFeatures_Impl::HasPosition(
38110                    this,
38111                    core::mem::transmute_copy(&value),
38112                )
38113                .into()
38114            }
38115        }
38116        unsafe extern "system" fn HasSize<
38117            Identity: ICoreWebView2WindowFeatures_Impl,
38118            const OFFSET: isize,
38119        >(
38120            this: *mut core::ffi::c_void,
38121            value: *mut windows_core::BOOL,
38122        ) -> windows_core::HRESULT {
38123            unsafe {
38124                let this: &Identity =
38125                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38126                ICoreWebView2WindowFeatures_Impl::HasSize(this, core::mem::transmute_copy(&value))
38127                    .into()
38128            }
38129        }
38130        unsafe extern "system" fn Left<
38131            Identity: ICoreWebView2WindowFeatures_Impl,
38132            const OFFSET: isize,
38133        >(
38134            this: *mut core::ffi::c_void,
38135            value: *mut u32,
38136        ) -> windows_core::HRESULT {
38137            unsafe {
38138                let this: &Identity =
38139                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38140                ICoreWebView2WindowFeatures_Impl::Left(this, core::mem::transmute_copy(&value))
38141                    .into()
38142            }
38143        }
38144        unsafe extern "system" fn Top<
38145            Identity: ICoreWebView2WindowFeatures_Impl,
38146            const OFFSET: isize,
38147        >(
38148            this: *mut core::ffi::c_void,
38149            value: *mut u32,
38150        ) -> windows_core::HRESULT {
38151            unsafe {
38152                let this: &Identity =
38153                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38154                ICoreWebView2WindowFeatures_Impl::Top(this, core::mem::transmute_copy(&value))
38155                    .into()
38156            }
38157        }
38158        unsafe extern "system" fn Height<
38159            Identity: ICoreWebView2WindowFeatures_Impl,
38160            const OFFSET: isize,
38161        >(
38162            this: *mut core::ffi::c_void,
38163            value: *mut u32,
38164        ) -> windows_core::HRESULT {
38165            unsafe {
38166                let this: &Identity =
38167                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38168                ICoreWebView2WindowFeatures_Impl::Height(this, core::mem::transmute_copy(&value))
38169                    .into()
38170            }
38171        }
38172        unsafe extern "system" fn Width<
38173            Identity: ICoreWebView2WindowFeatures_Impl,
38174            const OFFSET: isize,
38175        >(
38176            this: *mut core::ffi::c_void,
38177            value: *mut u32,
38178        ) -> windows_core::HRESULT {
38179            unsafe {
38180                let this: &Identity =
38181                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38182                ICoreWebView2WindowFeatures_Impl::Width(this, core::mem::transmute_copy(&value))
38183                    .into()
38184            }
38185        }
38186        unsafe extern "system" fn ShouldDisplayMenuBar<
38187            Identity: ICoreWebView2WindowFeatures_Impl,
38188            const OFFSET: isize,
38189        >(
38190            this: *mut core::ffi::c_void,
38191            value: *mut windows_core::BOOL,
38192        ) -> windows_core::HRESULT {
38193            unsafe {
38194                let this: &Identity =
38195                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38196                ICoreWebView2WindowFeatures_Impl::ShouldDisplayMenuBar(
38197                    this,
38198                    core::mem::transmute_copy(&value),
38199                )
38200                .into()
38201            }
38202        }
38203        unsafe extern "system" fn ShouldDisplayStatus<
38204            Identity: ICoreWebView2WindowFeatures_Impl,
38205            const OFFSET: isize,
38206        >(
38207            this: *mut core::ffi::c_void,
38208            value: *mut windows_core::BOOL,
38209        ) -> windows_core::HRESULT {
38210            unsafe {
38211                let this: &Identity =
38212                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38213                ICoreWebView2WindowFeatures_Impl::ShouldDisplayStatus(
38214                    this,
38215                    core::mem::transmute_copy(&value),
38216                )
38217                .into()
38218            }
38219        }
38220        unsafe extern "system" fn ShouldDisplayToolbar<
38221            Identity: ICoreWebView2WindowFeatures_Impl,
38222            const OFFSET: isize,
38223        >(
38224            this: *mut core::ffi::c_void,
38225            value: *mut windows_core::BOOL,
38226        ) -> windows_core::HRESULT {
38227            unsafe {
38228                let this: &Identity =
38229                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38230                ICoreWebView2WindowFeatures_Impl::ShouldDisplayToolbar(
38231                    this,
38232                    core::mem::transmute_copy(&value),
38233                )
38234                .into()
38235            }
38236        }
38237        unsafe extern "system" fn ShouldDisplayScrollBars<
38238            Identity: ICoreWebView2WindowFeatures_Impl,
38239            const OFFSET: isize,
38240        >(
38241            this: *mut core::ffi::c_void,
38242            value: *mut windows_core::BOOL,
38243        ) -> windows_core::HRESULT {
38244            unsafe {
38245                let this: &Identity =
38246                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38247                ICoreWebView2WindowFeatures_Impl::ShouldDisplayScrollBars(
38248                    this,
38249                    core::mem::transmute_copy(&value),
38250                )
38251                .into()
38252            }
38253        }
38254        Self {
38255            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
38256            HasPosition: HasPosition::<Identity, OFFSET>,
38257            HasSize: HasSize::<Identity, OFFSET>,
38258            Left: Left::<Identity, OFFSET>,
38259            Top: Top::<Identity, OFFSET>,
38260            Height: Height::<Identity, OFFSET>,
38261            Width: Width::<Identity, OFFSET>,
38262            ShouldDisplayMenuBar: ShouldDisplayMenuBar::<Identity, OFFSET>,
38263            ShouldDisplayStatus: ShouldDisplayStatus::<Identity, OFFSET>,
38264            ShouldDisplayToolbar: ShouldDisplayToolbar::<Identity, OFFSET>,
38265            ShouldDisplayScrollBars: ShouldDisplayScrollBars::<Identity, OFFSET>,
38266        }
38267    }
38268    pub fn matches(iid: &windows_core::GUID) -> bool {
38269        iid == &<ICoreWebView2WindowFeatures as windows_core::Interface>::IID
38270    }
38271}
38272impl windows_core::RuntimeName for ICoreWebView2WindowFeatures {}
38273windows_core::imp::define_interface!(
38274    ICoreWebView2ZoomFactorChangedEventHandler,
38275    ICoreWebView2ZoomFactorChangedEventHandler_Vtbl,
38276    0xb52d71d6_c4df_4543_a90c_64a3e60f38cb
38277);
38278windows_core::imp::interface_hierarchy!(
38279    ICoreWebView2ZoomFactorChangedEventHandler,
38280    windows_core::IUnknown
38281);
38282impl ICoreWebView2ZoomFactorChangedEventHandler {
38283    pub unsafe fn Invoke<P0, P1>(&self, sender: P0, args: P1) -> windows_core::Result<()>
38284    where
38285        P0: windows_core::Param<ICoreWebView2Controller>,
38286        P1: windows_core::Param<windows_core::IUnknown>,
38287    {
38288        unsafe {
38289            (windows_core::Interface::vtable(self).Invoke)(
38290                windows_core::Interface::as_raw(self),
38291                sender.param().abi(),
38292                args.param().abi(),
38293            )
38294            .ok()
38295        }
38296    }
38297}
38298#[repr(C)]
38299#[doc(hidden)]
38300pub struct ICoreWebView2ZoomFactorChangedEventHandler_Vtbl {
38301    pub base__: windows_core::IUnknown_Vtbl,
38302    pub Invoke: unsafe extern "system" fn(
38303        *mut core::ffi::c_void,
38304        *mut core::ffi::c_void,
38305        *mut core::ffi::c_void,
38306    ) -> windows_core::HRESULT,
38307}
38308pub trait ICoreWebView2ZoomFactorChangedEventHandler_Impl: windows_core::IUnknownImpl {
38309    fn Invoke(
38310        &self,
38311        sender: windows_core::Ref<'_, ICoreWebView2Controller>,
38312        args: windows_core::Ref<'_, windows_core::IUnknown>,
38313    ) -> windows_core::Result<()>;
38314}
38315impl ICoreWebView2ZoomFactorChangedEventHandler_Vtbl {
38316    pub const fn new<
38317        Identity: ICoreWebView2ZoomFactorChangedEventHandler_Impl,
38318        const OFFSET: isize,
38319    >() -> Self {
38320        unsafe extern "system" fn Invoke<
38321            Identity: ICoreWebView2ZoomFactorChangedEventHandler_Impl,
38322            const OFFSET: isize,
38323        >(
38324            this: *mut core::ffi::c_void,
38325            sender: *mut core::ffi::c_void,
38326            args: *mut core::ffi::c_void,
38327        ) -> windows_core::HRESULT {
38328            unsafe {
38329                let this: &Identity =
38330                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38331                ICoreWebView2ZoomFactorChangedEventHandler_Impl::Invoke(
38332                    this,
38333                    core::mem::transmute_copy(&sender),
38334                    core::mem::transmute_copy(&args),
38335                )
38336                .into()
38337            }
38338        }
38339        Self {
38340            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
38341            Invoke: Invoke::<Identity, OFFSET>,
38342        }
38343    }
38344    pub fn matches(iid: &windows_core::GUID) -> bool {
38345        iid == &<ICoreWebView2ZoomFactorChangedEventHandler as windows_core::Interface>::IID
38346    }
38347}
38348impl windows_core::RuntimeName for ICoreWebView2ZoomFactorChangedEventHandler {}
38349windows_core::imp::define_interface!(
38350    ICoreWebView2_10,
38351    ICoreWebView2_10_Vtbl,
38352    0xb1690564_6f5a_4983_8e48_31d1143fecdb
38353);
38354impl core::ops::Deref for ICoreWebView2_10 {
38355    type Target = ICoreWebView2_9;
38356    fn deref(&self) -> &Self::Target {
38357        unsafe { core::mem::transmute(self) }
38358    }
38359}
38360windows_core::imp::interface_hierarchy!(
38361    ICoreWebView2_10,
38362    windows_core::IUnknown,
38363    ICoreWebView2,
38364    ICoreWebView2_2,
38365    ICoreWebView2_3,
38366    ICoreWebView2_4,
38367    ICoreWebView2_5,
38368    ICoreWebView2_6,
38369    ICoreWebView2_7,
38370    ICoreWebView2_8,
38371    ICoreWebView2_9
38372);
38373impl ICoreWebView2_10 {
38374    pub unsafe fn add_BasicAuthenticationRequested<P0>(
38375        &self,
38376        eventhandler: P0,
38377        token: *mut i64,
38378    ) -> windows_core::Result<()>
38379    where
38380        P0: windows_core::Param<ICoreWebView2BasicAuthenticationRequestedEventHandler>,
38381    {
38382        unsafe {
38383            (windows_core::Interface::vtable(self).add_BasicAuthenticationRequested)(
38384                windows_core::Interface::as_raw(self),
38385                eventhandler.param().abi(),
38386                token as _,
38387            )
38388            .ok()
38389        }
38390    }
38391    pub unsafe fn remove_BasicAuthenticationRequested(
38392        &self,
38393        token: i64,
38394    ) -> windows_core::Result<()> {
38395        unsafe {
38396            (windows_core::Interface::vtable(self).remove_BasicAuthenticationRequested)(
38397                windows_core::Interface::as_raw(self),
38398                token,
38399            )
38400            .ok()
38401        }
38402    }
38403}
38404#[repr(C)]
38405#[doc(hidden)]
38406pub struct ICoreWebView2_10_Vtbl {
38407    pub base__: ICoreWebView2_9_Vtbl,
38408    pub add_BasicAuthenticationRequested: unsafe extern "system" fn(
38409        *mut core::ffi::c_void,
38410        *mut core::ffi::c_void,
38411        *mut i64,
38412    ) -> windows_core::HRESULT,
38413    pub remove_BasicAuthenticationRequested:
38414        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
38415}
38416pub trait ICoreWebView2_10_Impl: ICoreWebView2_9_Impl {
38417    fn add_BasicAuthenticationRequested(
38418        &self,
38419        eventhandler: windows_core::Ref<'_, ICoreWebView2BasicAuthenticationRequestedEventHandler>,
38420        token: *mut i64,
38421    ) -> windows_core::Result<()>;
38422    fn remove_BasicAuthenticationRequested(&self, token: i64) -> windows_core::Result<()>;
38423}
38424impl ICoreWebView2_10_Vtbl {
38425    pub const fn new<Identity: ICoreWebView2_10_Impl, const OFFSET: isize>() -> Self {
38426        unsafe extern "system" fn add_BasicAuthenticationRequested<
38427            Identity: ICoreWebView2_10_Impl,
38428            const OFFSET: isize,
38429        >(
38430            this: *mut core::ffi::c_void,
38431            eventhandler: *mut core::ffi::c_void,
38432            token: *mut i64,
38433        ) -> windows_core::HRESULT {
38434            unsafe {
38435                let this: &Identity =
38436                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38437                ICoreWebView2_10_Impl::add_BasicAuthenticationRequested(
38438                    this,
38439                    core::mem::transmute_copy(&eventhandler),
38440                    core::mem::transmute_copy(&token),
38441                )
38442                .into()
38443            }
38444        }
38445        unsafe extern "system" fn remove_BasicAuthenticationRequested<
38446            Identity: ICoreWebView2_10_Impl,
38447            const OFFSET: isize,
38448        >(
38449            this: *mut core::ffi::c_void,
38450            token: i64,
38451        ) -> windows_core::HRESULT {
38452            unsafe {
38453                let this: &Identity =
38454                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38455                ICoreWebView2_10_Impl::remove_BasicAuthenticationRequested(
38456                    this,
38457                    core::mem::transmute_copy(&token),
38458                )
38459                .into()
38460            }
38461        }
38462        Self {
38463            base__: ICoreWebView2_9_Vtbl::new::<Identity, OFFSET>(),
38464            add_BasicAuthenticationRequested: add_BasicAuthenticationRequested::<Identity, OFFSET>,
38465            remove_BasicAuthenticationRequested: remove_BasicAuthenticationRequested::<
38466                Identity,
38467                OFFSET,
38468            >,
38469        }
38470    }
38471    pub fn matches(iid: &windows_core::GUID) -> bool {
38472        iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
38473            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
38474            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
38475            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
38476            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
38477            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
38478            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
38479            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
38480            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
38481            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
38482    }
38483}
38484impl windows_core::RuntimeName for ICoreWebView2_10 {}
38485windows_core::imp::define_interface!(
38486    ICoreWebView2_11,
38487    ICoreWebView2_11_Vtbl,
38488    0x0be78e56_c193_4051_b943_23b460c08bdb
38489);
38490impl core::ops::Deref for ICoreWebView2_11 {
38491    type Target = ICoreWebView2_10;
38492    fn deref(&self) -> &Self::Target {
38493        unsafe { core::mem::transmute(self) }
38494    }
38495}
38496windows_core::imp::interface_hierarchy!(
38497    ICoreWebView2_11,
38498    windows_core::IUnknown,
38499    ICoreWebView2,
38500    ICoreWebView2_2,
38501    ICoreWebView2_3,
38502    ICoreWebView2_4,
38503    ICoreWebView2_5,
38504    ICoreWebView2_6,
38505    ICoreWebView2_7,
38506    ICoreWebView2_8,
38507    ICoreWebView2_9,
38508    ICoreWebView2_10
38509);
38510impl ICoreWebView2_11 {
38511    pub unsafe fn CallDevToolsProtocolMethodForSession<P0, P1, P2, P3>(
38512        &self,
38513        sessionid: P0,
38514        methodname: P1,
38515        parametersasjson: P2,
38516        handler: P3,
38517    ) -> windows_core::Result<()>
38518    where
38519        P0: windows_core::Param<windows_core::PCWSTR>,
38520        P1: windows_core::Param<windows_core::PCWSTR>,
38521        P2: windows_core::Param<windows_core::PCWSTR>,
38522        P3: windows_core::Param<ICoreWebView2CallDevToolsProtocolMethodCompletedHandler>,
38523    {
38524        unsafe {
38525            (windows_core::Interface::vtable(self).CallDevToolsProtocolMethodForSession)(
38526                windows_core::Interface::as_raw(self),
38527                sessionid.param().abi(),
38528                methodname.param().abi(),
38529                parametersasjson.param().abi(),
38530                handler.param().abi(),
38531            )
38532            .ok()
38533        }
38534    }
38535    pub unsafe fn add_ContextMenuRequested<P0>(
38536        &self,
38537        eventhandler: P0,
38538        token: *mut i64,
38539    ) -> windows_core::Result<()>
38540    where
38541        P0: windows_core::Param<ICoreWebView2ContextMenuRequestedEventHandler>,
38542    {
38543        unsafe {
38544            (windows_core::Interface::vtable(self).add_ContextMenuRequested)(
38545                windows_core::Interface::as_raw(self),
38546                eventhandler.param().abi(),
38547                token as _,
38548            )
38549            .ok()
38550        }
38551    }
38552    pub unsafe fn remove_ContextMenuRequested(&self, token: i64) -> windows_core::Result<()> {
38553        unsafe {
38554            (windows_core::Interface::vtable(self).remove_ContextMenuRequested)(
38555                windows_core::Interface::as_raw(self),
38556                token,
38557            )
38558            .ok()
38559        }
38560    }
38561}
38562#[repr(C)]
38563#[doc(hidden)]
38564pub struct ICoreWebView2_11_Vtbl {
38565    pub base__: ICoreWebView2_10_Vtbl,
38566    pub CallDevToolsProtocolMethodForSession: unsafe extern "system" fn(
38567        *mut core::ffi::c_void,
38568        windows_core::PCWSTR,
38569        windows_core::PCWSTR,
38570        windows_core::PCWSTR,
38571        *mut core::ffi::c_void,
38572    )
38573        -> windows_core::HRESULT,
38574    pub add_ContextMenuRequested: unsafe extern "system" fn(
38575        *mut core::ffi::c_void,
38576        *mut core::ffi::c_void,
38577        *mut i64,
38578    ) -> windows_core::HRESULT,
38579    pub remove_ContextMenuRequested:
38580        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
38581}
38582pub trait ICoreWebView2_11_Impl: ICoreWebView2_10_Impl {
38583    fn CallDevToolsProtocolMethodForSession(
38584        &self,
38585        sessionid: &windows_core::PCWSTR,
38586        methodname: &windows_core::PCWSTR,
38587        parametersasjson: &windows_core::PCWSTR,
38588        handler: windows_core::Ref<'_, ICoreWebView2CallDevToolsProtocolMethodCompletedHandler>,
38589    ) -> windows_core::Result<()>;
38590    fn add_ContextMenuRequested(
38591        &self,
38592        eventhandler: windows_core::Ref<'_, ICoreWebView2ContextMenuRequestedEventHandler>,
38593        token: *mut i64,
38594    ) -> windows_core::Result<()>;
38595    fn remove_ContextMenuRequested(&self, token: i64) -> windows_core::Result<()>;
38596}
38597impl ICoreWebView2_11_Vtbl {
38598    pub const fn new<Identity: ICoreWebView2_11_Impl, const OFFSET: isize>() -> Self {
38599        unsafe extern "system" fn CallDevToolsProtocolMethodForSession<
38600            Identity: ICoreWebView2_11_Impl,
38601            const OFFSET: isize,
38602        >(
38603            this: *mut core::ffi::c_void,
38604            sessionid: windows_core::PCWSTR,
38605            methodname: windows_core::PCWSTR,
38606            parametersasjson: windows_core::PCWSTR,
38607            handler: *mut core::ffi::c_void,
38608        ) -> windows_core::HRESULT {
38609            unsafe {
38610                let this: &Identity =
38611                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38612                ICoreWebView2_11_Impl::CallDevToolsProtocolMethodForSession(
38613                    this,
38614                    core::mem::transmute(&sessionid),
38615                    core::mem::transmute(&methodname),
38616                    core::mem::transmute(&parametersasjson),
38617                    core::mem::transmute_copy(&handler),
38618                )
38619                .into()
38620            }
38621        }
38622        unsafe extern "system" fn add_ContextMenuRequested<
38623            Identity: ICoreWebView2_11_Impl,
38624            const OFFSET: isize,
38625        >(
38626            this: *mut core::ffi::c_void,
38627            eventhandler: *mut core::ffi::c_void,
38628            token: *mut i64,
38629        ) -> windows_core::HRESULT {
38630            unsafe {
38631                let this: &Identity =
38632                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38633                ICoreWebView2_11_Impl::add_ContextMenuRequested(
38634                    this,
38635                    core::mem::transmute_copy(&eventhandler),
38636                    core::mem::transmute_copy(&token),
38637                )
38638                .into()
38639            }
38640        }
38641        unsafe extern "system" fn remove_ContextMenuRequested<
38642            Identity: ICoreWebView2_11_Impl,
38643            const OFFSET: isize,
38644        >(
38645            this: *mut core::ffi::c_void,
38646            token: i64,
38647        ) -> windows_core::HRESULT {
38648            unsafe {
38649                let this: &Identity =
38650                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38651                ICoreWebView2_11_Impl::remove_ContextMenuRequested(
38652                    this,
38653                    core::mem::transmute_copy(&token),
38654                )
38655                .into()
38656            }
38657        }
38658        Self {
38659            base__: ICoreWebView2_10_Vtbl::new::<Identity, OFFSET>(),
38660            CallDevToolsProtocolMethodForSession: CallDevToolsProtocolMethodForSession::<
38661                Identity,
38662                OFFSET,
38663            >,
38664            add_ContextMenuRequested: add_ContextMenuRequested::<Identity, OFFSET>,
38665            remove_ContextMenuRequested: remove_ContextMenuRequested::<Identity, OFFSET>,
38666        }
38667    }
38668    pub fn matches(iid: &windows_core::GUID) -> bool {
38669        iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
38670            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
38671            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
38672            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
38673            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
38674            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
38675            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
38676            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
38677            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
38678            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
38679            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
38680    }
38681}
38682impl windows_core::RuntimeName for ICoreWebView2_11 {}
38683windows_core::imp::define_interface!(
38684    ICoreWebView2_12,
38685    ICoreWebView2_12_Vtbl,
38686    0x35d69927_bcfa_4566_9349_6b3e0d154cac
38687);
38688impl core::ops::Deref for ICoreWebView2_12 {
38689    type Target = ICoreWebView2_11;
38690    fn deref(&self) -> &Self::Target {
38691        unsafe { core::mem::transmute(self) }
38692    }
38693}
38694windows_core::imp::interface_hierarchy!(
38695    ICoreWebView2_12,
38696    windows_core::IUnknown,
38697    ICoreWebView2,
38698    ICoreWebView2_2,
38699    ICoreWebView2_3,
38700    ICoreWebView2_4,
38701    ICoreWebView2_5,
38702    ICoreWebView2_6,
38703    ICoreWebView2_7,
38704    ICoreWebView2_8,
38705    ICoreWebView2_9,
38706    ICoreWebView2_10,
38707    ICoreWebView2_11
38708);
38709impl ICoreWebView2_12 {
38710    pub unsafe fn add_StatusBarTextChanged<P0>(
38711        &self,
38712        eventhandler: P0,
38713        token: *mut i64,
38714    ) -> windows_core::Result<()>
38715    where
38716        P0: windows_core::Param<ICoreWebView2StatusBarTextChangedEventHandler>,
38717    {
38718        unsafe {
38719            (windows_core::Interface::vtable(self).add_StatusBarTextChanged)(
38720                windows_core::Interface::as_raw(self),
38721                eventhandler.param().abi(),
38722                token as _,
38723            )
38724            .ok()
38725        }
38726    }
38727    pub unsafe fn remove_StatusBarTextChanged(&self, token: i64) -> windows_core::Result<()> {
38728        unsafe {
38729            (windows_core::Interface::vtable(self).remove_StatusBarTextChanged)(
38730                windows_core::Interface::as_raw(self),
38731                token,
38732            )
38733            .ok()
38734        }
38735    }
38736    pub unsafe fn StatusBarText(
38737        &self,
38738        value: *mut windows_core::PWSTR,
38739    ) -> windows_core::Result<()> {
38740        unsafe {
38741            (windows_core::Interface::vtable(self).StatusBarText)(
38742                windows_core::Interface::as_raw(self),
38743                value as _,
38744            )
38745            .ok()
38746        }
38747    }
38748}
38749#[repr(C)]
38750#[doc(hidden)]
38751pub struct ICoreWebView2_12_Vtbl {
38752    pub base__: ICoreWebView2_11_Vtbl,
38753    pub add_StatusBarTextChanged: unsafe extern "system" fn(
38754        *mut core::ffi::c_void,
38755        *mut core::ffi::c_void,
38756        *mut i64,
38757    ) -> windows_core::HRESULT,
38758    pub remove_StatusBarTextChanged:
38759        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
38760    pub StatusBarText: unsafe extern "system" fn(
38761        *mut core::ffi::c_void,
38762        *mut windows_core::PWSTR,
38763    ) -> windows_core::HRESULT,
38764}
38765pub trait ICoreWebView2_12_Impl: ICoreWebView2_11_Impl {
38766    fn add_StatusBarTextChanged(
38767        &self,
38768        eventhandler: windows_core::Ref<'_, ICoreWebView2StatusBarTextChangedEventHandler>,
38769        token: *mut i64,
38770    ) -> windows_core::Result<()>;
38771    fn remove_StatusBarTextChanged(&self, token: i64) -> windows_core::Result<()>;
38772    fn StatusBarText(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
38773}
38774impl ICoreWebView2_12_Vtbl {
38775    pub const fn new<Identity: ICoreWebView2_12_Impl, const OFFSET: isize>() -> Self {
38776        unsafe extern "system" fn add_StatusBarTextChanged<
38777            Identity: ICoreWebView2_12_Impl,
38778            const OFFSET: isize,
38779        >(
38780            this: *mut core::ffi::c_void,
38781            eventhandler: *mut core::ffi::c_void,
38782            token: *mut i64,
38783        ) -> windows_core::HRESULT {
38784            unsafe {
38785                let this: &Identity =
38786                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38787                ICoreWebView2_12_Impl::add_StatusBarTextChanged(
38788                    this,
38789                    core::mem::transmute_copy(&eventhandler),
38790                    core::mem::transmute_copy(&token),
38791                )
38792                .into()
38793            }
38794        }
38795        unsafe extern "system" fn remove_StatusBarTextChanged<
38796            Identity: ICoreWebView2_12_Impl,
38797            const OFFSET: isize,
38798        >(
38799            this: *mut core::ffi::c_void,
38800            token: i64,
38801        ) -> windows_core::HRESULT {
38802            unsafe {
38803                let this: &Identity =
38804                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38805                ICoreWebView2_12_Impl::remove_StatusBarTextChanged(
38806                    this,
38807                    core::mem::transmute_copy(&token),
38808                )
38809                .into()
38810            }
38811        }
38812        unsafe extern "system" fn StatusBarText<
38813            Identity: ICoreWebView2_12_Impl,
38814            const OFFSET: isize,
38815        >(
38816            this: *mut core::ffi::c_void,
38817            value: *mut windows_core::PWSTR,
38818        ) -> windows_core::HRESULT {
38819            unsafe {
38820                let this: &Identity =
38821                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38822                ICoreWebView2_12_Impl::StatusBarText(this, core::mem::transmute_copy(&value)).into()
38823            }
38824        }
38825        Self {
38826            base__: ICoreWebView2_11_Vtbl::new::<Identity, OFFSET>(),
38827            add_StatusBarTextChanged: add_StatusBarTextChanged::<Identity, OFFSET>,
38828            remove_StatusBarTextChanged: remove_StatusBarTextChanged::<Identity, OFFSET>,
38829            StatusBarText: StatusBarText::<Identity, OFFSET>,
38830        }
38831    }
38832    pub fn matches(iid: &windows_core::GUID) -> bool {
38833        iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
38834            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
38835            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
38836            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
38837            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
38838            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
38839            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
38840            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
38841            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
38842            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
38843            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
38844            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
38845    }
38846}
38847impl windows_core::RuntimeName for ICoreWebView2_12 {}
38848windows_core::imp::define_interface!(
38849    ICoreWebView2_13,
38850    ICoreWebView2_13_Vtbl,
38851    0xf75f09a8_667e_4983_88d6_c8773f315e84
38852);
38853impl core::ops::Deref for ICoreWebView2_13 {
38854    type Target = ICoreWebView2_12;
38855    fn deref(&self) -> &Self::Target {
38856        unsafe { core::mem::transmute(self) }
38857    }
38858}
38859windows_core::imp::interface_hierarchy!(
38860    ICoreWebView2_13,
38861    windows_core::IUnknown,
38862    ICoreWebView2,
38863    ICoreWebView2_2,
38864    ICoreWebView2_3,
38865    ICoreWebView2_4,
38866    ICoreWebView2_5,
38867    ICoreWebView2_6,
38868    ICoreWebView2_7,
38869    ICoreWebView2_8,
38870    ICoreWebView2_9,
38871    ICoreWebView2_10,
38872    ICoreWebView2_11,
38873    ICoreWebView2_12
38874);
38875impl ICoreWebView2_13 {
38876    pub unsafe fn Profile(&self) -> windows_core::Result<ICoreWebView2Profile> {
38877        unsafe {
38878            let mut result__ = core::mem::zeroed();
38879            (windows_core::Interface::vtable(self).Profile)(
38880                windows_core::Interface::as_raw(self),
38881                &mut result__,
38882            )
38883            .and_then(|| windows_core::Type::from_abi(result__))
38884        }
38885    }
38886}
38887#[repr(C)]
38888#[doc(hidden)]
38889pub struct ICoreWebView2_13_Vtbl {
38890    pub base__: ICoreWebView2_12_Vtbl,
38891    pub Profile: unsafe extern "system" fn(
38892        *mut core::ffi::c_void,
38893        *mut *mut core::ffi::c_void,
38894    ) -> windows_core::HRESULT,
38895}
38896pub trait ICoreWebView2_13_Impl: ICoreWebView2_12_Impl {
38897    fn Profile(&self) -> windows_core::Result<ICoreWebView2Profile>;
38898}
38899impl ICoreWebView2_13_Vtbl {
38900    pub const fn new<Identity: ICoreWebView2_13_Impl, const OFFSET: isize>() -> Self {
38901        unsafe extern "system" fn Profile<Identity: ICoreWebView2_13_Impl, const OFFSET: isize>(
38902            this: *mut core::ffi::c_void,
38903            value: *mut *mut core::ffi::c_void,
38904        ) -> windows_core::HRESULT {
38905            unsafe {
38906                let this: &Identity =
38907                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
38908                match ICoreWebView2_13_Impl::Profile(this) {
38909                    Ok(ok__) => {
38910                        value.write(core::mem::transmute(ok__));
38911                        windows_core::HRESULT(0)
38912                    }
38913                    Err(err) => err.into(),
38914                }
38915            }
38916        }
38917        Self {
38918            base__: ICoreWebView2_12_Vtbl::new::<Identity, OFFSET>(),
38919            Profile: Profile::<Identity, OFFSET>,
38920        }
38921    }
38922    pub fn matches(iid: &windows_core::GUID) -> bool {
38923        iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
38924            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
38925            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
38926            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
38927            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
38928            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
38929            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
38930            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
38931            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
38932            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
38933            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
38934            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
38935            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
38936    }
38937}
38938impl windows_core::RuntimeName for ICoreWebView2_13 {}
38939windows_core::imp::define_interface!(
38940    ICoreWebView2_14,
38941    ICoreWebView2_14_Vtbl,
38942    0x6daa4f10_4a90_4753_8898_77c5df534165
38943);
38944impl core::ops::Deref for ICoreWebView2_14 {
38945    type Target = ICoreWebView2_13;
38946    fn deref(&self) -> &Self::Target {
38947        unsafe { core::mem::transmute(self) }
38948    }
38949}
38950windows_core::imp::interface_hierarchy!(
38951    ICoreWebView2_14,
38952    windows_core::IUnknown,
38953    ICoreWebView2,
38954    ICoreWebView2_2,
38955    ICoreWebView2_3,
38956    ICoreWebView2_4,
38957    ICoreWebView2_5,
38958    ICoreWebView2_6,
38959    ICoreWebView2_7,
38960    ICoreWebView2_8,
38961    ICoreWebView2_9,
38962    ICoreWebView2_10,
38963    ICoreWebView2_11,
38964    ICoreWebView2_12,
38965    ICoreWebView2_13
38966);
38967impl ICoreWebView2_14 {
38968    pub unsafe fn add_ServerCertificateErrorDetected<P0>(
38969        &self,
38970        eventhandler: P0,
38971        token: *mut i64,
38972    ) -> windows_core::Result<()>
38973    where
38974        P0: windows_core::Param<ICoreWebView2ServerCertificateErrorDetectedEventHandler>,
38975    {
38976        unsafe {
38977            (windows_core::Interface::vtable(self).add_ServerCertificateErrorDetected)(
38978                windows_core::Interface::as_raw(self),
38979                eventhandler.param().abi(),
38980                token as _,
38981            )
38982            .ok()
38983        }
38984    }
38985    pub unsafe fn remove_ServerCertificateErrorDetected(
38986        &self,
38987        token: i64,
38988    ) -> windows_core::Result<()> {
38989        unsafe {
38990            (windows_core::Interface::vtable(self).remove_ServerCertificateErrorDetected)(
38991                windows_core::Interface::as_raw(self),
38992                token,
38993            )
38994            .ok()
38995        }
38996    }
38997    pub unsafe fn ClearServerCertificateErrorActions<P0>(
38998        &self,
38999        handler: P0,
39000    ) -> windows_core::Result<()>
39001    where
39002        P0: windows_core::Param<ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler>,
39003    {
39004        unsafe {
39005            (windows_core::Interface::vtable(self).ClearServerCertificateErrorActions)(
39006                windows_core::Interface::as_raw(self),
39007                handler.param().abi(),
39008            )
39009            .ok()
39010        }
39011    }
39012}
39013#[repr(C)]
39014#[doc(hidden)]
39015pub struct ICoreWebView2_14_Vtbl {
39016    pub base__: ICoreWebView2_13_Vtbl,
39017    pub add_ServerCertificateErrorDetected: unsafe extern "system" fn(
39018        *mut core::ffi::c_void,
39019        *mut core::ffi::c_void,
39020        *mut i64,
39021    ) -> windows_core::HRESULT,
39022    pub remove_ServerCertificateErrorDetected:
39023        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
39024    pub ClearServerCertificateErrorActions: unsafe extern "system" fn(
39025        *mut core::ffi::c_void,
39026        *mut core::ffi::c_void,
39027    ) -> windows_core::HRESULT,
39028}
39029pub trait ICoreWebView2_14_Impl: ICoreWebView2_13_Impl {
39030    fn add_ServerCertificateErrorDetected(
39031        &self,
39032        eventhandler: windows_core::Ref<
39033            '_,
39034            ICoreWebView2ServerCertificateErrorDetectedEventHandler,
39035        >,
39036        token: *mut i64,
39037    ) -> windows_core::Result<()>;
39038    fn remove_ServerCertificateErrorDetected(&self, token: i64) -> windows_core::Result<()>;
39039    fn ClearServerCertificateErrorActions(
39040        &self,
39041        handler: windows_core::Ref<
39042            '_,
39043            ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler,
39044        >,
39045    ) -> windows_core::Result<()>;
39046}
39047impl ICoreWebView2_14_Vtbl {
39048    pub const fn new<Identity: ICoreWebView2_14_Impl, const OFFSET: isize>() -> Self {
39049        unsafe extern "system" fn add_ServerCertificateErrorDetected<
39050            Identity: ICoreWebView2_14_Impl,
39051            const OFFSET: isize,
39052        >(
39053            this: *mut core::ffi::c_void,
39054            eventhandler: *mut core::ffi::c_void,
39055            token: *mut i64,
39056        ) -> windows_core::HRESULT {
39057            unsafe {
39058                let this: &Identity =
39059                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39060                ICoreWebView2_14_Impl::add_ServerCertificateErrorDetected(
39061                    this,
39062                    core::mem::transmute_copy(&eventhandler),
39063                    core::mem::transmute_copy(&token),
39064                )
39065                .into()
39066            }
39067        }
39068        unsafe extern "system" fn remove_ServerCertificateErrorDetected<
39069            Identity: ICoreWebView2_14_Impl,
39070            const OFFSET: isize,
39071        >(
39072            this: *mut core::ffi::c_void,
39073            token: i64,
39074        ) -> windows_core::HRESULT {
39075            unsafe {
39076                let this: &Identity =
39077                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39078                ICoreWebView2_14_Impl::remove_ServerCertificateErrorDetected(
39079                    this,
39080                    core::mem::transmute_copy(&token),
39081                )
39082                .into()
39083            }
39084        }
39085        unsafe extern "system" fn ClearServerCertificateErrorActions<
39086            Identity: ICoreWebView2_14_Impl,
39087            const OFFSET: isize,
39088        >(
39089            this: *mut core::ffi::c_void,
39090            handler: *mut core::ffi::c_void,
39091        ) -> windows_core::HRESULT {
39092            unsafe {
39093                let this: &Identity =
39094                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39095                ICoreWebView2_14_Impl::ClearServerCertificateErrorActions(
39096                    this,
39097                    core::mem::transmute_copy(&handler),
39098                )
39099                .into()
39100            }
39101        }
39102        Self {
39103            base__: ICoreWebView2_13_Vtbl::new::<Identity, OFFSET>(),
39104            add_ServerCertificateErrorDetected: add_ServerCertificateErrorDetected::<
39105                Identity,
39106                OFFSET,
39107            >,
39108            remove_ServerCertificateErrorDetected: remove_ServerCertificateErrorDetected::<
39109                Identity,
39110                OFFSET,
39111            >,
39112            ClearServerCertificateErrorActions: ClearServerCertificateErrorActions::<
39113                Identity,
39114                OFFSET,
39115            >,
39116        }
39117    }
39118    pub fn matches(iid: &windows_core::GUID) -> bool {
39119        iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
39120            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
39121            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
39122            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
39123            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
39124            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
39125            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
39126            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
39127            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
39128            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
39129            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
39130            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
39131            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
39132            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
39133    }
39134}
39135impl windows_core::RuntimeName for ICoreWebView2_14 {}
39136windows_core::imp::define_interface!(
39137    ICoreWebView2_15,
39138    ICoreWebView2_15_Vtbl,
39139    0x517b2d1d_7dae_4a66_a4f4_10352ffb9518
39140);
39141impl core::ops::Deref for ICoreWebView2_15 {
39142    type Target = ICoreWebView2_14;
39143    fn deref(&self) -> &Self::Target {
39144        unsafe { core::mem::transmute(self) }
39145    }
39146}
39147windows_core::imp::interface_hierarchy!(
39148    ICoreWebView2_15,
39149    windows_core::IUnknown,
39150    ICoreWebView2,
39151    ICoreWebView2_2,
39152    ICoreWebView2_3,
39153    ICoreWebView2_4,
39154    ICoreWebView2_5,
39155    ICoreWebView2_6,
39156    ICoreWebView2_7,
39157    ICoreWebView2_8,
39158    ICoreWebView2_9,
39159    ICoreWebView2_10,
39160    ICoreWebView2_11,
39161    ICoreWebView2_12,
39162    ICoreWebView2_13,
39163    ICoreWebView2_14
39164);
39165impl ICoreWebView2_15 {
39166    pub unsafe fn add_FaviconChanged<P0>(
39167        &self,
39168        eventhandler: P0,
39169        token: *mut i64,
39170    ) -> windows_core::Result<()>
39171    where
39172        P0: windows_core::Param<ICoreWebView2FaviconChangedEventHandler>,
39173    {
39174        unsafe {
39175            (windows_core::Interface::vtable(self).add_FaviconChanged)(
39176                windows_core::Interface::as_raw(self),
39177                eventhandler.param().abi(),
39178                token as _,
39179            )
39180            .ok()
39181        }
39182    }
39183    pub unsafe fn remove_FaviconChanged(&self, token: i64) -> windows_core::Result<()> {
39184        unsafe {
39185            (windows_core::Interface::vtable(self).remove_FaviconChanged)(
39186                windows_core::Interface::as_raw(self),
39187                token,
39188            )
39189            .ok()
39190        }
39191    }
39192    pub unsafe fn FaviconUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()> {
39193        unsafe {
39194            (windows_core::Interface::vtable(self).FaviconUri)(
39195                windows_core::Interface::as_raw(self),
39196                value as _,
39197            )
39198            .ok()
39199        }
39200    }
39201    pub unsafe fn GetFavicon<P1>(
39202        &self,
39203        format: COREWEBVIEW2_FAVICON_IMAGE_FORMAT,
39204        completedhandler: P1,
39205    ) -> windows_core::Result<()>
39206    where
39207        P1: windows_core::Param<ICoreWebView2GetFaviconCompletedHandler>,
39208    {
39209        unsafe {
39210            (windows_core::Interface::vtable(self).GetFavicon)(
39211                windows_core::Interface::as_raw(self),
39212                format,
39213                completedhandler.param().abi(),
39214            )
39215            .ok()
39216        }
39217    }
39218}
39219#[repr(C)]
39220#[doc(hidden)]
39221pub struct ICoreWebView2_15_Vtbl {
39222    pub base__: ICoreWebView2_14_Vtbl,
39223    pub add_FaviconChanged: unsafe extern "system" fn(
39224        *mut core::ffi::c_void,
39225        *mut core::ffi::c_void,
39226        *mut i64,
39227    ) -> windows_core::HRESULT,
39228    pub remove_FaviconChanged:
39229        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
39230    pub FaviconUri: unsafe extern "system" fn(
39231        *mut core::ffi::c_void,
39232        *mut windows_core::PWSTR,
39233    ) -> windows_core::HRESULT,
39234    pub GetFavicon: unsafe extern "system" fn(
39235        *mut core::ffi::c_void,
39236        COREWEBVIEW2_FAVICON_IMAGE_FORMAT,
39237        *mut core::ffi::c_void,
39238    ) -> windows_core::HRESULT,
39239}
39240pub trait ICoreWebView2_15_Impl: ICoreWebView2_14_Impl {
39241    fn add_FaviconChanged(
39242        &self,
39243        eventhandler: windows_core::Ref<'_, ICoreWebView2FaviconChangedEventHandler>,
39244        token: *mut i64,
39245    ) -> windows_core::Result<()>;
39246    fn remove_FaviconChanged(&self, token: i64) -> windows_core::Result<()>;
39247    fn FaviconUri(&self, value: *mut windows_core::PWSTR) -> windows_core::Result<()>;
39248    fn GetFavicon(
39249        &self,
39250        format: COREWEBVIEW2_FAVICON_IMAGE_FORMAT,
39251        completedhandler: windows_core::Ref<'_, ICoreWebView2GetFaviconCompletedHandler>,
39252    ) -> windows_core::Result<()>;
39253}
39254impl ICoreWebView2_15_Vtbl {
39255    pub const fn new<Identity: ICoreWebView2_15_Impl, const OFFSET: isize>() -> Self {
39256        unsafe extern "system" fn add_FaviconChanged<
39257            Identity: ICoreWebView2_15_Impl,
39258            const OFFSET: isize,
39259        >(
39260            this: *mut core::ffi::c_void,
39261            eventhandler: *mut core::ffi::c_void,
39262            token: *mut i64,
39263        ) -> windows_core::HRESULT {
39264            unsafe {
39265                let this: &Identity =
39266                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39267                ICoreWebView2_15_Impl::add_FaviconChanged(
39268                    this,
39269                    core::mem::transmute_copy(&eventhandler),
39270                    core::mem::transmute_copy(&token),
39271                )
39272                .into()
39273            }
39274        }
39275        unsafe extern "system" fn remove_FaviconChanged<
39276            Identity: ICoreWebView2_15_Impl,
39277            const OFFSET: isize,
39278        >(
39279            this: *mut core::ffi::c_void,
39280            token: i64,
39281        ) -> windows_core::HRESULT {
39282            unsafe {
39283                let this: &Identity =
39284                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39285                ICoreWebView2_15_Impl::remove_FaviconChanged(
39286                    this,
39287                    core::mem::transmute_copy(&token),
39288                )
39289                .into()
39290            }
39291        }
39292        unsafe extern "system" fn FaviconUri<
39293            Identity: ICoreWebView2_15_Impl,
39294            const OFFSET: isize,
39295        >(
39296            this: *mut core::ffi::c_void,
39297            value: *mut windows_core::PWSTR,
39298        ) -> windows_core::HRESULT {
39299            unsafe {
39300                let this: &Identity =
39301                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39302                ICoreWebView2_15_Impl::FaviconUri(this, core::mem::transmute_copy(&value)).into()
39303            }
39304        }
39305        unsafe extern "system" fn GetFavicon<
39306            Identity: ICoreWebView2_15_Impl,
39307            const OFFSET: isize,
39308        >(
39309            this: *mut core::ffi::c_void,
39310            format: COREWEBVIEW2_FAVICON_IMAGE_FORMAT,
39311            completedhandler: *mut core::ffi::c_void,
39312        ) -> windows_core::HRESULT {
39313            unsafe {
39314                let this: &Identity =
39315                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39316                ICoreWebView2_15_Impl::GetFavicon(
39317                    this,
39318                    core::mem::transmute_copy(&format),
39319                    core::mem::transmute_copy(&completedhandler),
39320                )
39321                .into()
39322            }
39323        }
39324        Self {
39325            base__: ICoreWebView2_14_Vtbl::new::<Identity, OFFSET>(),
39326            add_FaviconChanged: add_FaviconChanged::<Identity, OFFSET>,
39327            remove_FaviconChanged: remove_FaviconChanged::<Identity, OFFSET>,
39328            FaviconUri: FaviconUri::<Identity, OFFSET>,
39329            GetFavicon: GetFavicon::<Identity, OFFSET>,
39330        }
39331    }
39332    pub fn matches(iid: &windows_core::GUID) -> bool {
39333        iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
39334            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
39335            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
39336            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
39337            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
39338            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
39339            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
39340            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
39341            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
39342            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
39343            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
39344            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
39345            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
39346            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
39347            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
39348    }
39349}
39350impl windows_core::RuntimeName for ICoreWebView2_15 {}
39351windows_core::imp::define_interface!(
39352    ICoreWebView2_16,
39353    ICoreWebView2_16_Vtbl,
39354    0x0eb34dc9_9f91_41e1_8639_95cd5943906b
39355);
39356impl core::ops::Deref for ICoreWebView2_16 {
39357    type Target = ICoreWebView2_15;
39358    fn deref(&self) -> &Self::Target {
39359        unsafe { core::mem::transmute(self) }
39360    }
39361}
39362windows_core::imp::interface_hierarchy!(
39363    ICoreWebView2_16,
39364    windows_core::IUnknown,
39365    ICoreWebView2,
39366    ICoreWebView2_2,
39367    ICoreWebView2_3,
39368    ICoreWebView2_4,
39369    ICoreWebView2_5,
39370    ICoreWebView2_6,
39371    ICoreWebView2_7,
39372    ICoreWebView2_8,
39373    ICoreWebView2_9,
39374    ICoreWebView2_10,
39375    ICoreWebView2_11,
39376    ICoreWebView2_12,
39377    ICoreWebView2_13,
39378    ICoreWebView2_14,
39379    ICoreWebView2_15
39380);
39381impl ICoreWebView2_16 {
39382    pub unsafe fn Print<P0, P1>(&self, printsettings: P0, handler: P1) -> windows_core::Result<()>
39383    where
39384        P0: windows_core::Param<ICoreWebView2PrintSettings>,
39385        P1: windows_core::Param<ICoreWebView2PrintCompletedHandler>,
39386    {
39387        unsafe {
39388            (windows_core::Interface::vtable(self).Print)(
39389                windows_core::Interface::as_raw(self),
39390                printsettings.param().abi(),
39391                handler.param().abi(),
39392            )
39393            .ok()
39394        }
39395    }
39396    pub unsafe fn ShowPrintUI(
39397        &self,
39398        printdialogkind: COREWEBVIEW2_PRINT_DIALOG_KIND,
39399    ) -> windows_core::Result<()> {
39400        unsafe {
39401            (windows_core::Interface::vtable(self).ShowPrintUI)(
39402                windows_core::Interface::as_raw(self),
39403                printdialogkind,
39404            )
39405            .ok()
39406        }
39407    }
39408    pub unsafe fn PrintToPdfStream<P0, P1>(
39409        &self,
39410        printsettings: P0,
39411        handler: P1,
39412    ) -> windows_core::Result<()>
39413    where
39414        P0: windows_core::Param<ICoreWebView2PrintSettings>,
39415        P1: windows_core::Param<ICoreWebView2PrintToPdfStreamCompletedHandler>,
39416    {
39417        unsafe {
39418            (windows_core::Interface::vtable(self).PrintToPdfStream)(
39419                windows_core::Interface::as_raw(self),
39420                printsettings.param().abi(),
39421                handler.param().abi(),
39422            )
39423            .ok()
39424        }
39425    }
39426}
39427#[repr(C)]
39428#[doc(hidden)]
39429pub struct ICoreWebView2_16_Vtbl {
39430    pub base__: ICoreWebView2_15_Vtbl,
39431    pub Print: unsafe extern "system" fn(
39432        *mut core::ffi::c_void,
39433        *mut core::ffi::c_void,
39434        *mut core::ffi::c_void,
39435    ) -> windows_core::HRESULT,
39436    pub ShowPrintUI: unsafe extern "system" fn(
39437        *mut core::ffi::c_void,
39438        COREWEBVIEW2_PRINT_DIALOG_KIND,
39439    ) -> windows_core::HRESULT,
39440    pub PrintToPdfStream: unsafe extern "system" fn(
39441        *mut core::ffi::c_void,
39442        *mut core::ffi::c_void,
39443        *mut core::ffi::c_void,
39444    ) -> windows_core::HRESULT,
39445}
39446pub trait ICoreWebView2_16_Impl: ICoreWebView2_15_Impl {
39447    fn Print(
39448        &self,
39449        printsettings: windows_core::Ref<'_, ICoreWebView2PrintSettings>,
39450        handler: windows_core::Ref<'_, ICoreWebView2PrintCompletedHandler>,
39451    ) -> windows_core::Result<()>;
39452    fn ShowPrintUI(
39453        &self,
39454        printdialogkind: COREWEBVIEW2_PRINT_DIALOG_KIND,
39455    ) -> windows_core::Result<()>;
39456    fn PrintToPdfStream(
39457        &self,
39458        printsettings: windows_core::Ref<'_, ICoreWebView2PrintSettings>,
39459        handler: windows_core::Ref<'_, ICoreWebView2PrintToPdfStreamCompletedHandler>,
39460    ) -> windows_core::Result<()>;
39461}
39462impl ICoreWebView2_16_Vtbl {
39463    pub const fn new<Identity: ICoreWebView2_16_Impl, const OFFSET: isize>() -> Self {
39464        unsafe extern "system" fn Print<Identity: ICoreWebView2_16_Impl, const OFFSET: isize>(
39465            this: *mut core::ffi::c_void,
39466            printsettings: *mut core::ffi::c_void,
39467            handler: *mut core::ffi::c_void,
39468        ) -> windows_core::HRESULT {
39469            unsafe {
39470                let this: &Identity =
39471                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39472                ICoreWebView2_16_Impl::Print(
39473                    this,
39474                    core::mem::transmute_copy(&printsettings),
39475                    core::mem::transmute_copy(&handler),
39476                )
39477                .into()
39478            }
39479        }
39480        unsafe extern "system" fn ShowPrintUI<
39481            Identity: ICoreWebView2_16_Impl,
39482            const OFFSET: isize,
39483        >(
39484            this: *mut core::ffi::c_void,
39485            printdialogkind: COREWEBVIEW2_PRINT_DIALOG_KIND,
39486        ) -> windows_core::HRESULT {
39487            unsafe {
39488                let this: &Identity =
39489                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39490                ICoreWebView2_16_Impl::ShowPrintUI(
39491                    this,
39492                    core::mem::transmute_copy(&printdialogkind),
39493                )
39494                .into()
39495            }
39496        }
39497        unsafe extern "system" fn PrintToPdfStream<
39498            Identity: ICoreWebView2_16_Impl,
39499            const OFFSET: isize,
39500        >(
39501            this: *mut core::ffi::c_void,
39502            printsettings: *mut core::ffi::c_void,
39503            handler: *mut core::ffi::c_void,
39504        ) -> windows_core::HRESULT {
39505            unsafe {
39506                let this: &Identity =
39507                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39508                ICoreWebView2_16_Impl::PrintToPdfStream(
39509                    this,
39510                    core::mem::transmute_copy(&printsettings),
39511                    core::mem::transmute_copy(&handler),
39512                )
39513                .into()
39514            }
39515        }
39516        Self {
39517            base__: ICoreWebView2_15_Vtbl::new::<Identity, OFFSET>(),
39518            Print: Print::<Identity, OFFSET>,
39519            ShowPrintUI: ShowPrintUI::<Identity, OFFSET>,
39520            PrintToPdfStream: PrintToPdfStream::<Identity, OFFSET>,
39521        }
39522    }
39523    pub fn matches(iid: &windows_core::GUID) -> bool {
39524        iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
39525            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
39526            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
39527            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
39528            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
39529            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
39530            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
39531            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
39532            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
39533            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
39534            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
39535            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
39536            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
39537            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
39538            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
39539            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
39540    }
39541}
39542impl windows_core::RuntimeName for ICoreWebView2_16 {}
39543windows_core::imp::define_interface!(
39544    ICoreWebView2_17,
39545    ICoreWebView2_17_Vtbl,
39546    0x702e75d4_fd44_434d_9d70_1a68a6b1192a
39547);
39548impl core::ops::Deref for ICoreWebView2_17 {
39549    type Target = ICoreWebView2_16;
39550    fn deref(&self) -> &Self::Target {
39551        unsafe { core::mem::transmute(self) }
39552    }
39553}
39554windows_core::imp::interface_hierarchy!(
39555    ICoreWebView2_17,
39556    windows_core::IUnknown,
39557    ICoreWebView2,
39558    ICoreWebView2_2,
39559    ICoreWebView2_3,
39560    ICoreWebView2_4,
39561    ICoreWebView2_5,
39562    ICoreWebView2_6,
39563    ICoreWebView2_7,
39564    ICoreWebView2_8,
39565    ICoreWebView2_9,
39566    ICoreWebView2_10,
39567    ICoreWebView2_11,
39568    ICoreWebView2_12,
39569    ICoreWebView2_13,
39570    ICoreWebView2_14,
39571    ICoreWebView2_15,
39572    ICoreWebView2_16
39573);
39574impl ICoreWebView2_17 {
39575    pub unsafe fn PostSharedBufferToScript<P0, P2>(
39576        &self,
39577        sharedbuffer: P0,
39578        access: COREWEBVIEW2_SHARED_BUFFER_ACCESS,
39579        additionaldataasjson: P2,
39580    ) -> windows_core::Result<()>
39581    where
39582        P0: windows_core::Param<ICoreWebView2SharedBuffer>,
39583        P2: windows_core::Param<windows_core::PCWSTR>,
39584    {
39585        unsafe {
39586            (windows_core::Interface::vtable(self).PostSharedBufferToScript)(
39587                windows_core::Interface::as_raw(self),
39588                sharedbuffer.param().abi(),
39589                access,
39590                additionaldataasjson.param().abi(),
39591            )
39592            .ok()
39593        }
39594    }
39595}
39596#[repr(C)]
39597#[doc(hidden)]
39598pub struct ICoreWebView2_17_Vtbl {
39599    pub base__: ICoreWebView2_16_Vtbl,
39600    pub PostSharedBufferToScript: unsafe extern "system" fn(
39601        *mut core::ffi::c_void,
39602        *mut core::ffi::c_void,
39603        COREWEBVIEW2_SHARED_BUFFER_ACCESS,
39604        windows_core::PCWSTR,
39605    ) -> windows_core::HRESULT,
39606}
39607pub trait ICoreWebView2_17_Impl: ICoreWebView2_16_Impl {
39608    fn PostSharedBufferToScript(
39609        &self,
39610        sharedbuffer: windows_core::Ref<'_, ICoreWebView2SharedBuffer>,
39611        access: COREWEBVIEW2_SHARED_BUFFER_ACCESS,
39612        additionaldataasjson: &windows_core::PCWSTR,
39613    ) -> windows_core::Result<()>;
39614}
39615impl ICoreWebView2_17_Vtbl {
39616    pub const fn new<Identity: ICoreWebView2_17_Impl, const OFFSET: isize>() -> Self {
39617        unsafe extern "system" fn PostSharedBufferToScript<
39618            Identity: ICoreWebView2_17_Impl,
39619            const OFFSET: isize,
39620        >(
39621            this: *mut core::ffi::c_void,
39622            sharedbuffer: *mut core::ffi::c_void,
39623            access: COREWEBVIEW2_SHARED_BUFFER_ACCESS,
39624            additionaldataasjson: windows_core::PCWSTR,
39625        ) -> windows_core::HRESULT {
39626            unsafe {
39627                let this: &Identity =
39628                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39629                ICoreWebView2_17_Impl::PostSharedBufferToScript(
39630                    this,
39631                    core::mem::transmute_copy(&sharedbuffer),
39632                    core::mem::transmute_copy(&access),
39633                    core::mem::transmute(&additionaldataasjson),
39634                )
39635                .into()
39636            }
39637        }
39638        Self {
39639            base__: ICoreWebView2_16_Vtbl::new::<Identity, OFFSET>(),
39640            PostSharedBufferToScript: PostSharedBufferToScript::<Identity, OFFSET>,
39641        }
39642    }
39643    pub fn matches(iid: &windows_core::GUID) -> bool {
39644        iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
39645            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
39646            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
39647            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
39648            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
39649            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
39650            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
39651            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
39652            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
39653            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
39654            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
39655            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
39656            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
39657            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
39658            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
39659            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
39660            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
39661    }
39662}
39663impl windows_core::RuntimeName for ICoreWebView2_17 {}
39664windows_core::imp::define_interface!(
39665    ICoreWebView2_18,
39666    ICoreWebView2_18_Vtbl,
39667    0x7a626017_28be_49b2_b865_3ba2b3522d90
39668);
39669impl core::ops::Deref for ICoreWebView2_18 {
39670    type Target = ICoreWebView2_17;
39671    fn deref(&self) -> &Self::Target {
39672        unsafe { core::mem::transmute(self) }
39673    }
39674}
39675windows_core::imp::interface_hierarchy!(
39676    ICoreWebView2_18,
39677    windows_core::IUnknown,
39678    ICoreWebView2,
39679    ICoreWebView2_2,
39680    ICoreWebView2_3,
39681    ICoreWebView2_4,
39682    ICoreWebView2_5,
39683    ICoreWebView2_6,
39684    ICoreWebView2_7,
39685    ICoreWebView2_8,
39686    ICoreWebView2_9,
39687    ICoreWebView2_10,
39688    ICoreWebView2_11,
39689    ICoreWebView2_12,
39690    ICoreWebView2_13,
39691    ICoreWebView2_14,
39692    ICoreWebView2_15,
39693    ICoreWebView2_16,
39694    ICoreWebView2_17
39695);
39696impl ICoreWebView2_18 {
39697    pub unsafe fn add_LaunchingExternalUriScheme<P0>(
39698        &self,
39699        eventhandler: P0,
39700        token: *mut i64,
39701    ) -> windows_core::Result<()>
39702    where
39703        P0: windows_core::Param<ICoreWebView2LaunchingExternalUriSchemeEventHandler>,
39704    {
39705        unsafe {
39706            (windows_core::Interface::vtable(self).add_LaunchingExternalUriScheme)(
39707                windows_core::Interface::as_raw(self),
39708                eventhandler.param().abi(),
39709                token as _,
39710            )
39711            .ok()
39712        }
39713    }
39714    pub unsafe fn remove_LaunchingExternalUriScheme(&self, token: i64) -> windows_core::Result<()> {
39715        unsafe {
39716            (windows_core::Interface::vtable(self).remove_LaunchingExternalUriScheme)(
39717                windows_core::Interface::as_raw(self),
39718                token,
39719            )
39720            .ok()
39721        }
39722    }
39723}
39724#[repr(C)]
39725#[doc(hidden)]
39726pub struct ICoreWebView2_18_Vtbl {
39727    pub base__: ICoreWebView2_17_Vtbl,
39728    pub add_LaunchingExternalUriScheme: unsafe extern "system" fn(
39729        *mut core::ffi::c_void,
39730        *mut core::ffi::c_void,
39731        *mut i64,
39732    ) -> windows_core::HRESULT,
39733    pub remove_LaunchingExternalUriScheme:
39734        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
39735}
39736pub trait ICoreWebView2_18_Impl: ICoreWebView2_17_Impl {
39737    fn add_LaunchingExternalUriScheme(
39738        &self,
39739        eventhandler: windows_core::Ref<'_, ICoreWebView2LaunchingExternalUriSchemeEventHandler>,
39740        token: *mut i64,
39741    ) -> windows_core::Result<()>;
39742    fn remove_LaunchingExternalUriScheme(&self, token: i64) -> windows_core::Result<()>;
39743}
39744impl ICoreWebView2_18_Vtbl {
39745    pub const fn new<Identity: ICoreWebView2_18_Impl, const OFFSET: isize>() -> Self {
39746        unsafe extern "system" fn add_LaunchingExternalUriScheme<
39747            Identity: ICoreWebView2_18_Impl,
39748            const OFFSET: isize,
39749        >(
39750            this: *mut core::ffi::c_void,
39751            eventhandler: *mut core::ffi::c_void,
39752            token: *mut i64,
39753        ) -> windows_core::HRESULT {
39754            unsafe {
39755                let this: &Identity =
39756                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39757                ICoreWebView2_18_Impl::add_LaunchingExternalUriScheme(
39758                    this,
39759                    core::mem::transmute_copy(&eventhandler),
39760                    core::mem::transmute_copy(&token),
39761                )
39762                .into()
39763            }
39764        }
39765        unsafe extern "system" fn remove_LaunchingExternalUriScheme<
39766            Identity: ICoreWebView2_18_Impl,
39767            const OFFSET: isize,
39768        >(
39769            this: *mut core::ffi::c_void,
39770            token: i64,
39771        ) -> windows_core::HRESULT {
39772            unsafe {
39773                let this: &Identity =
39774                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39775                ICoreWebView2_18_Impl::remove_LaunchingExternalUriScheme(
39776                    this,
39777                    core::mem::transmute_copy(&token),
39778                )
39779                .into()
39780            }
39781        }
39782        Self {
39783            base__: ICoreWebView2_17_Vtbl::new::<Identity, OFFSET>(),
39784            add_LaunchingExternalUriScheme: add_LaunchingExternalUriScheme::<Identity, OFFSET>,
39785            remove_LaunchingExternalUriScheme: remove_LaunchingExternalUriScheme::<Identity, OFFSET>,
39786        }
39787    }
39788    pub fn matches(iid: &windows_core::GUID) -> bool {
39789        iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
39790            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
39791            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
39792            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
39793            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
39794            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
39795            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
39796            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
39797            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
39798            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
39799            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
39800            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
39801            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
39802            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
39803            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
39804            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
39805            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
39806            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
39807    }
39808}
39809impl windows_core::RuntimeName for ICoreWebView2_18 {}
39810windows_core::imp::define_interface!(
39811    ICoreWebView2_19,
39812    ICoreWebView2_19_Vtbl,
39813    0x6921f954_79b0_437f_a997_c85811897c68
39814);
39815impl core::ops::Deref for ICoreWebView2_19 {
39816    type Target = ICoreWebView2_18;
39817    fn deref(&self) -> &Self::Target {
39818        unsafe { core::mem::transmute(self) }
39819    }
39820}
39821windows_core::imp::interface_hierarchy!(
39822    ICoreWebView2_19,
39823    windows_core::IUnknown,
39824    ICoreWebView2,
39825    ICoreWebView2_2,
39826    ICoreWebView2_3,
39827    ICoreWebView2_4,
39828    ICoreWebView2_5,
39829    ICoreWebView2_6,
39830    ICoreWebView2_7,
39831    ICoreWebView2_8,
39832    ICoreWebView2_9,
39833    ICoreWebView2_10,
39834    ICoreWebView2_11,
39835    ICoreWebView2_12,
39836    ICoreWebView2_13,
39837    ICoreWebView2_14,
39838    ICoreWebView2_15,
39839    ICoreWebView2_16,
39840    ICoreWebView2_17,
39841    ICoreWebView2_18
39842);
39843impl ICoreWebView2_19 {
39844    pub unsafe fn MemoryUsageTargetLevel(
39845        &self,
39846        value: *mut COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39847    ) -> windows_core::Result<()> {
39848        unsafe {
39849            (windows_core::Interface::vtable(self).MemoryUsageTargetLevel)(
39850                windows_core::Interface::as_raw(self),
39851                value as _,
39852            )
39853            .ok()
39854        }
39855    }
39856    pub unsafe fn SetMemoryUsageTargetLevel(
39857        &self,
39858        value: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39859    ) -> windows_core::Result<()> {
39860        unsafe {
39861            (windows_core::Interface::vtable(self).SetMemoryUsageTargetLevel)(
39862                windows_core::Interface::as_raw(self),
39863                value,
39864            )
39865            .ok()
39866        }
39867    }
39868}
39869#[repr(C)]
39870#[doc(hidden)]
39871pub struct ICoreWebView2_19_Vtbl {
39872    pub base__: ICoreWebView2_18_Vtbl,
39873    pub MemoryUsageTargetLevel: unsafe extern "system" fn(
39874        *mut core::ffi::c_void,
39875        *mut COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39876    ) -> windows_core::HRESULT,
39877    pub SetMemoryUsageTargetLevel: unsafe extern "system" fn(
39878        *mut core::ffi::c_void,
39879        COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39880    ) -> windows_core::HRESULT,
39881}
39882pub trait ICoreWebView2_19_Impl: ICoreWebView2_18_Impl {
39883    fn MemoryUsageTargetLevel(
39884        &self,
39885        value: *mut COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39886    ) -> windows_core::Result<()>;
39887    fn SetMemoryUsageTargetLevel(
39888        &self,
39889        value: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39890    ) -> windows_core::Result<()>;
39891}
39892impl ICoreWebView2_19_Vtbl {
39893    pub const fn new<Identity: ICoreWebView2_19_Impl, const OFFSET: isize>() -> Self {
39894        unsafe extern "system" fn MemoryUsageTargetLevel<
39895            Identity: ICoreWebView2_19_Impl,
39896            const OFFSET: isize,
39897        >(
39898            this: *mut core::ffi::c_void,
39899            value: *mut COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39900        ) -> windows_core::HRESULT {
39901            unsafe {
39902                let this: &Identity =
39903                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39904                ICoreWebView2_19_Impl::MemoryUsageTargetLevel(
39905                    this,
39906                    core::mem::transmute_copy(&value),
39907                )
39908                .into()
39909            }
39910        }
39911        unsafe extern "system" fn SetMemoryUsageTargetLevel<
39912            Identity: ICoreWebView2_19_Impl,
39913            const OFFSET: isize,
39914        >(
39915            this: *mut core::ffi::c_void,
39916            value: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL,
39917        ) -> windows_core::HRESULT {
39918            unsafe {
39919                let this: &Identity =
39920                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
39921                ICoreWebView2_19_Impl::SetMemoryUsageTargetLevel(
39922                    this,
39923                    core::mem::transmute_copy(&value),
39924                )
39925                .into()
39926            }
39927        }
39928        Self {
39929            base__: ICoreWebView2_18_Vtbl::new::<Identity, OFFSET>(),
39930            MemoryUsageTargetLevel: MemoryUsageTargetLevel::<Identity, OFFSET>,
39931            SetMemoryUsageTargetLevel: SetMemoryUsageTargetLevel::<Identity, OFFSET>,
39932        }
39933    }
39934    pub fn matches(iid: &windows_core::GUID) -> bool {
39935        iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
39936            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
39937            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
39938            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
39939            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
39940            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
39941            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
39942            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
39943            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
39944            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
39945            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
39946            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
39947            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
39948            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
39949            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
39950            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
39951            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
39952            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
39953            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
39954    }
39955}
39956impl windows_core::RuntimeName for ICoreWebView2_19 {}
39957windows_core::imp::define_interface!(
39958    ICoreWebView2_2,
39959    ICoreWebView2_2_Vtbl,
39960    0x9e8f0cf8_e670_4b5e_b2bc_73e061e3184c
39961);
39962impl core::ops::Deref for ICoreWebView2_2 {
39963    type Target = ICoreWebView2;
39964    fn deref(&self) -> &Self::Target {
39965        unsafe { core::mem::transmute(self) }
39966    }
39967}
39968windows_core::imp::interface_hierarchy!(ICoreWebView2_2, windows_core::IUnknown, ICoreWebView2);
39969impl ICoreWebView2_2 {
39970    pub unsafe fn add_WebResourceResponseReceived<P0>(
39971        &self,
39972        eventhandler: P0,
39973        token: *mut i64,
39974    ) -> windows_core::Result<()>
39975    where
39976        P0: windows_core::Param<ICoreWebView2WebResourceResponseReceivedEventHandler>,
39977    {
39978        unsafe {
39979            (windows_core::Interface::vtable(self).add_WebResourceResponseReceived)(
39980                windows_core::Interface::as_raw(self),
39981                eventhandler.param().abi(),
39982                token as _,
39983            )
39984            .ok()
39985        }
39986    }
39987    pub unsafe fn remove_WebResourceResponseReceived(
39988        &self,
39989        token: i64,
39990    ) -> windows_core::Result<()> {
39991        unsafe {
39992            (windows_core::Interface::vtable(self).remove_WebResourceResponseReceived)(
39993                windows_core::Interface::as_raw(self),
39994                token,
39995            )
39996            .ok()
39997        }
39998    }
39999    pub unsafe fn NavigateWithWebResourceRequest<P0>(&self, request: P0) -> windows_core::Result<()>
40000    where
40001        P0: windows_core::Param<ICoreWebView2WebResourceRequest>,
40002    {
40003        unsafe {
40004            (windows_core::Interface::vtable(self).NavigateWithWebResourceRequest)(
40005                windows_core::Interface::as_raw(self),
40006                request.param().abi(),
40007            )
40008            .ok()
40009        }
40010    }
40011    pub unsafe fn add_DOMContentLoaded<P0>(
40012        &self,
40013        eventhandler: P0,
40014        token: *mut i64,
40015    ) -> windows_core::Result<()>
40016    where
40017        P0: windows_core::Param<ICoreWebView2DOMContentLoadedEventHandler>,
40018    {
40019        unsafe {
40020            (windows_core::Interface::vtable(self).add_DOMContentLoaded)(
40021                windows_core::Interface::as_raw(self),
40022                eventhandler.param().abi(),
40023                token as _,
40024            )
40025            .ok()
40026        }
40027    }
40028    pub unsafe fn remove_DOMContentLoaded(&self, token: i64) -> windows_core::Result<()> {
40029        unsafe {
40030            (windows_core::Interface::vtable(self).remove_DOMContentLoaded)(
40031                windows_core::Interface::as_raw(self),
40032                token,
40033            )
40034            .ok()
40035        }
40036    }
40037    pub unsafe fn CookieManager(&self) -> windows_core::Result<ICoreWebView2CookieManager> {
40038        unsafe {
40039            let mut result__ = core::mem::zeroed();
40040            (windows_core::Interface::vtable(self).CookieManager)(
40041                windows_core::Interface::as_raw(self),
40042                &mut result__,
40043            )
40044            .and_then(|| windows_core::Type::from_abi(result__))
40045        }
40046    }
40047    pub unsafe fn Environment(&self) -> windows_core::Result<ICoreWebView2Environment> {
40048        unsafe {
40049            let mut result__ = core::mem::zeroed();
40050            (windows_core::Interface::vtable(self).Environment)(
40051                windows_core::Interface::as_raw(self),
40052                &mut result__,
40053            )
40054            .and_then(|| windows_core::Type::from_abi(result__))
40055        }
40056    }
40057}
40058#[repr(C)]
40059#[doc(hidden)]
40060pub struct ICoreWebView2_2_Vtbl {
40061    pub base__: ICoreWebView2_Vtbl,
40062    pub add_WebResourceResponseReceived: unsafe extern "system" fn(
40063        *mut core::ffi::c_void,
40064        *mut core::ffi::c_void,
40065        *mut i64,
40066    ) -> windows_core::HRESULT,
40067    pub remove_WebResourceResponseReceived:
40068        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
40069    pub NavigateWithWebResourceRequest: unsafe extern "system" fn(
40070        *mut core::ffi::c_void,
40071        *mut core::ffi::c_void,
40072    ) -> windows_core::HRESULT,
40073    pub add_DOMContentLoaded: unsafe extern "system" fn(
40074        *mut core::ffi::c_void,
40075        *mut core::ffi::c_void,
40076        *mut i64,
40077    ) -> windows_core::HRESULT,
40078    pub remove_DOMContentLoaded:
40079        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
40080    pub CookieManager: unsafe extern "system" fn(
40081        *mut core::ffi::c_void,
40082        *mut *mut core::ffi::c_void,
40083    ) -> windows_core::HRESULT,
40084    pub Environment: unsafe extern "system" fn(
40085        *mut core::ffi::c_void,
40086        *mut *mut core::ffi::c_void,
40087    ) -> windows_core::HRESULT,
40088}
40089pub trait ICoreWebView2_2_Impl: ICoreWebView2_Impl {
40090    fn add_WebResourceResponseReceived(
40091        &self,
40092        eventhandler: windows_core::Ref<'_, ICoreWebView2WebResourceResponseReceivedEventHandler>,
40093        token: *mut i64,
40094    ) -> windows_core::Result<()>;
40095    fn remove_WebResourceResponseReceived(&self, token: i64) -> windows_core::Result<()>;
40096    fn NavigateWithWebResourceRequest(
40097        &self,
40098        request: windows_core::Ref<'_, ICoreWebView2WebResourceRequest>,
40099    ) -> windows_core::Result<()>;
40100    fn add_DOMContentLoaded(
40101        &self,
40102        eventhandler: windows_core::Ref<'_, ICoreWebView2DOMContentLoadedEventHandler>,
40103        token: *mut i64,
40104    ) -> windows_core::Result<()>;
40105    fn remove_DOMContentLoaded(&self, token: i64) -> windows_core::Result<()>;
40106    fn CookieManager(&self) -> windows_core::Result<ICoreWebView2CookieManager>;
40107    fn Environment(&self) -> windows_core::Result<ICoreWebView2Environment>;
40108}
40109impl ICoreWebView2_2_Vtbl {
40110    pub const fn new<Identity: ICoreWebView2_2_Impl, const OFFSET: isize>() -> Self {
40111        unsafe extern "system" fn add_WebResourceResponseReceived<
40112            Identity: ICoreWebView2_2_Impl,
40113            const OFFSET: isize,
40114        >(
40115            this: *mut core::ffi::c_void,
40116            eventhandler: *mut core::ffi::c_void,
40117            token: *mut i64,
40118        ) -> windows_core::HRESULT {
40119            unsafe {
40120                let this: &Identity =
40121                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40122                ICoreWebView2_2_Impl::add_WebResourceResponseReceived(
40123                    this,
40124                    core::mem::transmute_copy(&eventhandler),
40125                    core::mem::transmute_copy(&token),
40126                )
40127                .into()
40128            }
40129        }
40130        unsafe extern "system" fn remove_WebResourceResponseReceived<
40131            Identity: ICoreWebView2_2_Impl,
40132            const OFFSET: isize,
40133        >(
40134            this: *mut core::ffi::c_void,
40135            token: i64,
40136        ) -> windows_core::HRESULT {
40137            unsafe {
40138                let this: &Identity =
40139                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40140                ICoreWebView2_2_Impl::remove_WebResourceResponseReceived(
40141                    this,
40142                    core::mem::transmute_copy(&token),
40143                )
40144                .into()
40145            }
40146        }
40147        unsafe extern "system" fn NavigateWithWebResourceRequest<
40148            Identity: ICoreWebView2_2_Impl,
40149            const OFFSET: isize,
40150        >(
40151            this: *mut core::ffi::c_void,
40152            request: *mut core::ffi::c_void,
40153        ) -> windows_core::HRESULT {
40154            unsafe {
40155                let this: &Identity =
40156                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40157                ICoreWebView2_2_Impl::NavigateWithWebResourceRequest(
40158                    this,
40159                    core::mem::transmute_copy(&request),
40160                )
40161                .into()
40162            }
40163        }
40164        unsafe extern "system" fn add_DOMContentLoaded<
40165            Identity: ICoreWebView2_2_Impl,
40166            const OFFSET: isize,
40167        >(
40168            this: *mut core::ffi::c_void,
40169            eventhandler: *mut core::ffi::c_void,
40170            token: *mut i64,
40171        ) -> windows_core::HRESULT {
40172            unsafe {
40173                let this: &Identity =
40174                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40175                ICoreWebView2_2_Impl::add_DOMContentLoaded(
40176                    this,
40177                    core::mem::transmute_copy(&eventhandler),
40178                    core::mem::transmute_copy(&token),
40179                )
40180                .into()
40181            }
40182        }
40183        unsafe extern "system" fn remove_DOMContentLoaded<
40184            Identity: ICoreWebView2_2_Impl,
40185            const OFFSET: isize,
40186        >(
40187            this: *mut core::ffi::c_void,
40188            token: i64,
40189        ) -> windows_core::HRESULT {
40190            unsafe {
40191                let this: &Identity =
40192                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40193                ICoreWebView2_2_Impl::remove_DOMContentLoaded(
40194                    this,
40195                    core::mem::transmute_copy(&token),
40196                )
40197                .into()
40198            }
40199        }
40200        unsafe extern "system" fn CookieManager<
40201            Identity: ICoreWebView2_2_Impl,
40202            const OFFSET: isize,
40203        >(
40204            this: *mut core::ffi::c_void,
40205            cookiemanager: *mut *mut core::ffi::c_void,
40206        ) -> windows_core::HRESULT {
40207            unsafe {
40208                let this: &Identity =
40209                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40210                match ICoreWebView2_2_Impl::CookieManager(this) {
40211                    Ok(ok__) => {
40212                        cookiemanager.write(core::mem::transmute(ok__));
40213                        windows_core::HRESULT(0)
40214                    }
40215                    Err(err) => err.into(),
40216                }
40217            }
40218        }
40219        unsafe extern "system" fn Environment<
40220            Identity: ICoreWebView2_2_Impl,
40221            const OFFSET: isize,
40222        >(
40223            this: *mut core::ffi::c_void,
40224            environment: *mut *mut core::ffi::c_void,
40225        ) -> windows_core::HRESULT {
40226            unsafe {
40227                let this: &Identity =
40228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40229                match ICoreWebView2_2_Impl::Environment(this) {
40230                    Ok(ok__) => {
40231                        environment.write(core::mem::transmute(ok__));
40232                        windows_core::HRESULT(0)
40233                    }
40234                    Err(err) => err.into(),
40235                }
40236            }
40237        }
40238        Self {
40239            base__: ICoreWebView2_Vtbl::new::<Identity, OFFSET>(),
40240            add_WebResourceResponseReceived: add_WebResourceResponseReceived::<Identity, OFFSET>,
40241            remove_WebResourceResponseReceived: remove_WebResourceResponseReceived::<
40242                Identity,
40243                OFFSET,
40244            >,
40245            NavigateWithWebResourceRequest: NavigateWithWebResourceRequest::<Identity, OFFSET>,
40246            add_DOMContentLoaded: add_DOMContentLoaded::<Identity, OFFSET>,
40247            remove_DOMContentLoaded: remove_DOMContentLoaded::<Identity, OFFSET>,
40248            CookieManager: CookieManager::<Identity, OFFSET>,
40249            Environment: Environment::<Identity, OFFSET>,
40250        }
40251    }
40252    pub fn matches(iid: &windows_core::GUID) -> bool {
40253        iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
40254            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
40255    }
40256}
40257impl windows_core::RuntimeName for ICoreWebView2_2 {}
40258windows_core::imp::define_interface!(
40259    ICoreWebView2_20,
40260    ICoreWebView2_20_Vtbl,
40261    0xb4bc1926_7305_11ee_b962_0242ac120002
40262);
40263impl core::ops::Deref for ICoreWebView2_20 {
40264    type Target = ICoreWebView2_19;
40265    fn deref(&self) -> &Self::Target {
40266        unsafe { core::mem::transmute(self) }
40267    }
40268}
40269windows_core::imp::interface_hierarchy!(
40270    ICoreWebView2_20,
40271    windows_core::IUnknown,
40272    ICoreWebView2,
40273    ICoreWebView2_2,
40274    ICoreWebView2_3,
40275    ICoreWebView2_4,
40276    ICoreWebView2_5,
40277    ICoreWebView2_6,
40278    ICoreWebView2_7,
40279    ICoreWebView2_8,
40280    ICoreWebView2_9,
40281    ICoreWebView2_10,
40282    ICoreWebView2_11,
40283    ICoreWebView2_12,
40284    ICoreWebView2_13,
40285    ICoreWebView2_14,
40286    ICoreWebView2_15,
40287    ICoreWebView2_16,
40288    ICoreWebView2_17,
40289    ICoreWebView2_18,
40290    ICoreWebView2_19
40291);
40292impl ICoreWebView2_20 {
40293    pub unsafe fn FrameId(&self, value: *mut u32) -> windows_core::Result<()> {
40294        unsafe {
40295            (windows_core::Interface::vtable(self).FrameId)(
40296                windows_core::Interface::as_raw(self),
40297                value as _,
40298            )
40299            .ok()
40300        }
40301    }
40302}
40303#[repr(C)]
40304#[doc(hidden)]
40305pub struct ICoreWebView2_20_Vtbl {
40306    pub base__: ICoreWebView2_19_Vtbl,
40307    pub FrameId:
40308        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
40309}
40310pub trait ICoreWebView2_20_Impl: ICoreWebView2_19_Impl {
40311    fn FrameId(&self, value: *mut u32) -> windows_core::Result<()>;
40312}
40313impl ICoreWebView2_20_Vtbl {
40314    pub const fn new<Identity: ICoreWebView2_20_Impl, const OFFSET: isize>() -> Self {
40315        unsafe extern "system" fn FrameId<Identity: ICoreWebView2_20_Impl, const OFFSET: isize>(
40316            this: *mut core::ffi::c_void,
40317            value: *mut u32,
40318        ) -> windows_core::HRESULT {
40319            unsafe {
40320                let this: &Identity =
40321                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40322                ICoreWebView2_20_Impl::FrameId(this, core::mem::transmute_copy(&value)).into()
40323            }
40324        }
40325        Self {
40326            base__: ICoreWebView2_19_Vtbl::new::<Identity, OFFSET>(),
40327            FrameId: FrameId::<Identity, OFFSET>,
40328        }
40329    }
40330    pub fn matches(iid: &windows_core::GUID) -> bool {
40331        iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
40332            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
40333            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
40334            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
40335            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
40336            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
40337            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
40338            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
40339            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
40340            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
40341            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
40342            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
40343            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
40344            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
40345            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
40346            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
40347            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
40348            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
40349            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
40350            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
40351    }
40352}
40353impl windows_core::RuntimeName for ICoreWebView2_20 {}
40354windows_core::imp::define_interface!(
40355    ICoreWebView2_21,
40356    ICoreWebView2_21_Vtbl,
40357    0xc4980dea_587b_43b9_8143_3ef3bf552d95
40358);
40359impl core::ops::Deref for ICoreWebView2_21 {
40360    type Target = ICoreWebView2_20;
40361    fn deref(&self) -> &Self::Target {
40362        unsafe { core::mem::transmute(self) }
40363    }
40364}
40365windows_core::imp::interface_hierarchy!(
40366    ICoreWebView2_21,
40367    windows_core::IUnknown,
40368    ICoreWebView2,
40369    ICoreWebView2_2,
40370    ICoreWebView2_3,
40371    ICoreWebView2_4,
40372    ICoreWebView2_5,
40373    ICoreWebView2_6,
40374    ICoreWebView2_7,
40375    ICoreWebView2_8,
40376    ICoreWebView2_9,
40377    ICoreWebView2_10,
40378    ICoreWebView2_11,
40379    ICoreWebView2_12,
40380    ICoreWebView2_13,
40381    ICoreWebView2_14,
40382    ICoreWebView2_15,
40383    ICoreWebView2_16,
40384    ICoreWebView2_17,
40385    ICoreWebView2_18,
40386    ICoreWebView2_19,
40387    ICoreWebView2_20
40388);
40389impl ICoreWebView2_21 {
40390    pub unsafe fn ExecuteScriptWithResult<P0, P1>(
40391        &self,
40392        javascript: P0,
40393        handler: P1,
40394    ) -> windows_core::Result<()>
40395    where
40396        P0: windows_core::Param<windows_core::PCWSTR>,
40397        P1: windows_core::Param<ICoreWebView2ExecuteScriptWithResultCompletedHandler>,
40398    {
40399        unsafe {
40400            (windows_core::Interface::vtable(self).ExecuteScriptWithResult)(
40401                windows_core::Interface::as_raw(self),
40402                javascript.param().abi(),
40403                handler.param().abi(),
40404            )
40405            .ok()
40406        }
40407    }
40408}
40409#[repr(C)]
40410#[doc(hidden)]
40411pub struct ICoreWebView2_21_Vtbl {
40412    pub base__: ICoreWebView2_20_Vtbl,
40413    pub ExecuteScriptWithResult: unsafe extern "system" fn(
40414        *mut core::ffi::c_void,
40415        windows_core::PCWSTR,
40416        *mut core::ffi::c_void,
40417    ) -> windows_core::HRESULT,
40418}
40419pub trait ICoreWebView2_21_Impl: ICoreWebView2_20_Impl {
40420    fn ExecuteScriptWithResult(
40421        &self,
40422        javascript: &windows_core::PCWSTR,
40423        handler: windows_core::Ref<'_, ICoreWebView2ExecuteScriptWithResultCompletedHandler>,
40424    ) -> windows_core::Result<()>;
40425}
40426impl ICoreWebView2_21_Vtbl {
40427    pub const fn new<Identity: ICoreWebView2_21_Impl, const OFFSET: isize>() -> Self {
40428        unsafe extern "system" fn ExecuteScriptWithResult<
40429            Identity: ICoreWebView2_21_Impl,
40430            const OFFSET: isize,
40431        >(
40432            this: *mut core::ffi::c_void,
40433            javascript: windows_core::PCWSTR,
40434            handler: *mut core::ffi::c_void,
40435        ) -> windows_core::HRESULT {
40436            unsafe {
40437                let this: &Identity =
40438                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40439                ICoreWebView2_21_Impl::ExecuteScriptWithResult(
40440                    this,
40441                    core::mem::transmute(&javascript),
40442                    core::mem::transmute_copy(&handler),
40443                )
40444                .into()
40445            }
40446        }
40447        Self {
40448            base__: ICoreWebView2_20_Vtbl::new::<Identity, OFFSET>(),
40449            ExecuteScriptWithResult: ExecuteScriptWithResult::<Identity, OFFSET>,
40450        }
40451    }
40452    pub fn matches(iid: &windows_core::GUID) -> bool {
40453        iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
40454            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
40455            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
40456            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
40457            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
40458            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
40459            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
40460            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
40461            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
40462            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
40463            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
40464            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
40465            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
40466            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
40467            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
40468            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
40469            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
40470            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
40471            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
40472            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
40473            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
40474    }
40475}
40476impl windows_core::RuntimeName for ICoreWebView2_21 {}
40477windows_core::imp::define_interface!(
40478    ICoreWebView2_22,
40479    ICoreWebView2_22_Vtbl,
40480    0xdb75dfc7_a857_4632_a398_6969dde26c0a
40481);
40482impl core::ops::Deref for ICoreWebView2_22 {
40483    type Target = ICoreWebView2_21;
40484    fn deref(&self) -> &Self::Target {
40485        unsafe { core::mem::transmute(self) }
40486    }
40487}
40488windows_core::imp::interface_hierarchy!(
40489    ICoreWebView2_22,
40490    windows_core::IUnknown,
40491    ICoreWebView2,
40492    ICoreWebView2_2,
40493    ICoreWebView2_3,
40494    ICoreWebView2_4,
40495    ICoreWebView2_5,
40496    ICoreWebView2_6,
40497    ICoreWebView2_7,
40498    ICoreWebView2_8,
40499    ICoreWebView2_9,
40500    ICoreWebView2_10,
40501    ICoreWebView2_11,
40502    ICoreWebView2_12,
40503    ICoreWebView2_13,
40504    ICoreWebView2_14,
40505    ICoreWebView2_15,
40506    ICoreWebView2_16,
40507    ICoreWebView2_17,
40508    ICoreWebView2_18,
40509    ICoreWebView2_19,
40510    ICoreWebView2_20,
40511    ICoreWebView2_21
40512);
40513impl ICoreWebView2_22 {
40514    pub unsafe fn AddWebResourceRequestedFilterWithRequestSourceKinds<P0>(
40515        &self,
40516        uri: P0,
40517        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40518        requestsourcekinds: COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40519    ) -> windows_core::Result<()>
40520    where
40521        P0: windows_core::Param<windows_core::PCWSTR>,
40522    {
40523        unsafe {
40524            (windows_core::Interface::vtable(self)
40525                .AddWebResourceRequestedFilterWithRequestSourceKinds)(
40526                windows_core::Interface::as_raw(self),
40527                uri.param().abi(),
40528                resourcecontext,
40529                requestsourcekinds,
40530            )
40531            .ok()
40532        }
40533    }
40534    pub unsafe fn RemoveWebResourceRequestedFilterWithRequestSourceKinds<P0>(
40535        &self,
40536        uri: P0,
40537        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40538        requestsourcekinds: COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40539    ) -> windows_core::Result<()>
40540    where
40541        P0: windows_core::Param<windows_core::PCWSTR>,
40542    {
40543        unsafe {
40544            (windows_core::Interface::vtable(self)
40545                .RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
40546                windows_core::Interface::as_raw(self),
40547                uri.param().abi(),
40548                resourcecontext,
40549                requestsourcekinds,
40550            )
40551            .ok()
40552        }
40553    }
40554}
40555#[repr(C)]
40556#[doc(hidden)]
40557pub struct ICoreWebView2_22_Vtbl {
40558    pub base__: ICoreWebView2_21_Vtbl,
40559    pub AddWebResourceRequestedFilterWithRequestSourceKinds:
40560        unsafe extern "system" fn(
40561            *mut core::ffi::c_void,
40562            windows_core::PCWSTR,
40563            COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40564            COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40565        ) -> windows_core::HRESULT,
40566    pub RemoveWebResourceRequestedFilterWithRequestSourceKinds:
40567        unsafe extern "system" fn(
40568            *mut core::ffi::c_void,
40569            windows_core::PCWSTR,
40570            COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40571            COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40572        ) -> windows_core::HRESULT,
40573}
40574pub trait ICoreWebView2_22_Impl: ICoreWebView2_21_Impl {
40575    fn AddWebResourceRequestedFilterWithRequestSourceKinds(
40576        &self,
40577        uri: &windows_core::PCWSTR,
40578        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40579        requestsourcekinds: COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40580    ) -> windows_core::Result<()>;
40581    fn RemoveWebResourceRequestedFilterWithRequestSourceKinds(
40582        &self,
40583        uri: &windows_core::PCWSTR,
40584        resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40585        requestsourcekinds: COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40586    ) -> windows_core::Result<()>;
40587}
40588impl ICoreWebView2_22_Vtbl {
40589    pub const fn new<Identity: ICoreWebView2_22_Impl, const OFFSET: isize>() -> Self {
40590        unsafe extern "system" fn AddWebResourceRequestedFilterWithRequestSourceKinds<
40591            Identity: ICoreWebView2_22_Impl,
40592            const OFFSET: isize,
40593        >(
40594            this: *mut core::ffi::c_void,
40595            uri: windows_core::PCWSTR,
40596            resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40597            requestsourcekinds: COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40598        ) -> windows_core::HRESULT {
40599            unsafe {
40600                let this: &Identity =
40601                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40602                ICoreWebView2_22_Impl::AddWebResourceRequestedFilterWithRequestSourceKinds(
40603                    this,
40604                    core::mem::transmute(&uri),
40605                    core::mem::transmute_copy(&resourcecontext),
40606                    core::mem::transmute_copy(&requestsourcekinds),
40607                )
40608                .into()
40609            }
40610        }
40611        unsafe extern "system" fn RemoveWebResourceRequestedFilterWithRequestSourceKinds<
40612            Identity: ICoreWebView2_22_Impl,
40613            const OFFSET: isize,
40614        >(
40615            this: *mut core::ffi::c_void,
40616            uri: windows_core::PCWSTR,
40617            resourcecontext: COREWEBVIEW2_WEB_RESOURCE_CONTEXT,
40618            requestsourcekinds: COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS,
40619        ) -> windows_core::HRESULT {
40620            unsafe {
40621                let this: &Identity =
40622                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40623                ICoreWebView2_22_Impl::RemoveWebResourceRequestedFilterWithRequestSourceKinds(
40624                    this,
40625                    core::mem::transmute(&uri),
40626                    core::mem::transmute_copy(&resourcecontext),
40627                    core::mem::transmute_copy(&requestsourcekinds),
40628                )
40629                .into()
40630            }
40631        }
40632        Self {
40633            base__: ICoreWebView2_21_Vtbl::new::<Identity, OFFSET>(),
40634            AddWebResourceRequestedFilterWithRequestSourceKinds:
40635                AddWebResourceRequestedFilterWithRequestSourceKinds::<Identity, OFFSET>,
40636            RemoveWebResourceRequestedFilterWithRequestSourceKinds:
40637                RemoveWebResourceRequestedFilterWithRequestSourceKinds::<Identity, OFFSET>,
40638        }
40639    }
40640    pub fn matches(iid: &windows_core::GUID) -> bool {
40641        iid == &<ICoreWebView2_22 as windows_core::Interface>::IID
40642            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
40643            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
40644            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
40645            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
40646            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
40647            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
40648            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
40649            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
40650            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
40651            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
40652            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
40653            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
40654            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
40655            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
40656            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
40657            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
40658            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
40659            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
40660            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
40661            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
40662            || iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
40663    }
40664}
40665impl windows_core::RuntimeName for ICoreWebView2_22 {}
40666windows_core::imp::define_interface!(
40667    ICoreWebView2_23,
40668    ICoreWebView2_23_Vtbl,
40669    0x508f0db5_90c4_5872_90a7_267a91377502
40670);
40671impl core::ops::Deref for ICoreWebView2_23 {
40672    type Target = ICoreWebView2_22;
40673    fn deref(&self) -> &Self::Target {
40674        unsafe { core::mem::transmute(self) }
40675    }
40676}
40677windows_core::imp::interface_hierarchy!(
40678    ICoreWebView2_23,
40679    windows_core::IUnknown,
40680    ICoreWebView2,
40681    ICoreWebView2_2,
40682    ICoreWebView2_3,
40683    ICoreWebView2_4,
40684    ICoreWebView2_5,
40685    ICoreWebView2_6,
40686    ICoreWebView2_7,
40687    ICoreWebView2_8,
40688    ICoreWebView2_9,
40689    ICoreWebView2_10,
40690    ICoreWebView2_11,
40691    ICoreWebView2_12,
40692    ICoreWebView2_13,
40693    ICoreWebView2_14,
40694    ICoreWebView2_15,
40695    ICoreWebView2_16,
40696    ICoreWebView2_17,
40697    ICoreWebView2_18,
40698    ICoreWebView2_19,
40699    ICoreWebView2_20,
40700    ICoreWebView2_21,
40701    ICoreWebView2_22
40702);
40703impl ICoreWebView2_23 {
40704    pub unsafe fn PostWebMessageAsJsonWithAdditionalObjects<P0, P1>(
40705        &self,
40706        webmessageasjson: P0,
40707        additionalobjects: P1,
40708    ) -> windows_core::Result<()>
40709    where
40710        P0: windows_core::Param<windows_core::PCWSTR>,
40711        P1: windows_core::Param<ICoreWebView2ObjectCollectionView>,
40712    {
40713        unsafe {
40714            (windows_core::Interface::vtable(self).PostWebMessageAsJsonWithAdditionalObjects)(
40715                windows_core::Interface::as_raw(self),
40716                webmessageasjson.param().abi(),
40717                additionalobjects.param().abi(),
40718            )
40719            .ok()
40720        }
40721    }
40722}
40723#[repr(C)]
40724#[doc(hidden)]
40725pub struct ICoreWebView2_23_Vtbl {
40726    pub base__: ICoreWebView2_22_Vtbl,
40727    pub PostWebMessageAsJsonWithAdditionalObjects:
40728        unsafe extern "system" fn(
40729            *mut core::ffi::c_void,
40730            windows_core::PCWSTR,
40731            *mut core::ffi::c_void,
40732        ) -> windows_core::HRESULT,
40733}
40734pub trait ICoreWebView2_23_Impl: ICoreWebView2_22_Impl {
40735    fn PostWebMessageAsJsonWithAdditionalObjects(
40736        &self,
40737        webmessageasjson: &windows_core::PCWSTR,
40738        additionalobjects: windows_core::Ref<'_, ICoreWebView2ObjectCollectionView>,
40739    ) -> windows_core::Result<()>;
40740}
40741impl ICoreWebView2_23_Vtbl {
40742    pub const fn new<Identity: ICoreWebView2_23_Impl, const OFFSET: isize>() -> Self {
40743        unsafe extern "system" fn PostWebMessageAsJsonWithAdditionalObjects<
40744            Identity: ICoreWebView2_23_Impl,
40745            const OFFSET: isize,
40746        >(
40747            this: *mut core::ffi::c_void,
40748            webmessageasjson: windows_core::PCWSTR,
40749            additionalobjects: *mut core::ffi::c_void,
40750        ) -> windows_core::HRESULT {
40751            unsafe {
40752                let this: &Identity =
40753                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40754                ICoreWebView2_23_Impl::PostWebMessageAsJsonWithAdditionalObjects(
40755                    this,
40756                    core::mem::transmute(&webmessageasjson),
40757                    core::mem::transmute_copy(&additionalobjects),
40758                )
40759                .into()
40760            }
40761        }
40762        Self {
40763            base__: ICoreWebView2_22_Vtbl::new::<Identity, OFFSET>(),
40764            PostWebMessageAsJsonWithAdditionalObjects: PostWebMessageAsJsonWithAdditionalObjects::<
40765                Identity,
40766                OFFSET,
40767            >,
40768        }
40769    }
40770    pub fn matches(iid: &windows_core::GUID) -> bool {
40771        iid == &<ICoreWebView2_23 as windows_core::Interface>::IID
40772            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
40773            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
40774            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
40775            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
40776            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
40777            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
40778            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
40779            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
40780            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
40781            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
40782            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
40783            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
40784            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
40785            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
40786            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
40787            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
40788            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
40789            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
40790            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
40791            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
40792            || iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
40793            || iid == &<ICoreWebView2_22 as windows_core::Interface>::IID
40794    }
40795}
40796impl windows_core::RuntimeName for ICoreWebView2_23 {}
40797windows_core::imp::define_interface!(
40798    ICoreWebView2_24,
40799    ICoreWebView2_24_Vtbl,
40800    0x39a7ad55_4287_5cc1_88a1_c6f458593824
40801);
40802impl core::ops::Deref for ICoreWebView2_24 {
40803    type Target = ICoreWebView2_23;
40804    fn deref(&self) -> &Self::Target {
40805        unsafe { core::mem::transmute(self) }
40806    }
40807}
40808windows_core::imp::interface_hierarchy!(
40809    ICoreWebView2_24,
40810    windows_core::IUnknown,
40811    ICoreWebView2,
40812    ICoreWebView2_2,
40813    ICoreWebView2_3,
40814    ICoreWebView2_4,
40815    ICoreWebView2_5,
40816    ICoreWebView2_6,
40817    ICoreWebView2_7,
40818    ICoreWebView2_8,
40819    ICoreWebView2_9,
40820    ICoreWebView2_10,
40821    ICoreWebView2_11,
40822    ICoreWebView2_12,
40823    ICoreWebView2_13,
40824    ICoreWebView2_14,
40825    ICoreWebView2_15,
40826    ICoreWebView2_16,
40827    ICoreWebView2_17,
40828    ICoreWebView2_18,
40829    ICoreWebView2_19,
40830    ICoreWebView2_20,
40831    ICoreWebView2_21,
40832    ICoreWebView2_22,
40833    ICoreWebView2_23
40834);
40835impl ICoreWebView2_24 {
40836    pub unsafe fn add_NotificationReceived<P0>(
40837        &self,
40838        eventhandler: P0,
40839        token: *mut i64,
40840    ) -> windows_core::Result<()>
40841    where
40842        P0: windows_core::Param<ICoreWebView2NotificationReceivedEventHandler>,
40843    {
40844        unsafe {
40845            (windows_core::Interface::vtable(self).add_NotificationReceived)(
40846                windows_core::Interface::as_raw(self),
40847                eventhandler.param().abi(),
40848                token as _,
40849            )
40850            .ok()
40851        }
40852    }
40853    pub unsafe fn remove_NotificationReceived(&self, token: i64) -> windows_core::Result<()> {
40854        unsafe {
40855            (windows_core::Interface::vtable(self).remove_NotificationReceived)(
40856                windows_core::Interface::as_raw(self),
40857                token,
40858            )
40859            .ok()
40860        }
40861    }
40862}
40863#[repr(C)]
40864#[doc(hidden)]
40865pub struct ICoreWebView2_24_Vtbl {
40866    pub base__: ICoreWebView2_23_Vtbl,
40867    pub add_NotificationReceived: unsafe extern "system" fn(
40868        *mut core::ffi::c_void,
40869        *mut core::ffi::c_void,
40870        *mut i64,
40871    ) -> windows_core::HRESULT,
40872    pub remove_NotificationReceived:
40873        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
40874}
40875pub trait ICoreWebView2_24_Impl: ICoreWebView2_23_Impl {
40876    fn add_NotificationReceived(
40877        &self,
40878        eventhandler: windows_core::Ref<'_, ICoreWebView2NotificationReceivedEventHandler>,
40879        token: *mut i64,
40880    ) -> windows_core::Result<()>;
40881    fn remove_NotificationReceived(&self, token: i64) -> windows_core::Result<()>;
40882}
40883impl ICoreWebView2_24_Vtbl {
40884    pub const fn new<Identity: ICoreWebView2_24_Impl, const OFFSET: isize>() -> Self {
40885        unsafe extern "system" fn add_NotificationReceived<
40886            Identity: ICoreWebView2_24_Impl,
40887            const OFFSET: isize,
40888        >(
40889            this: *mut core::ffi::c_void,
40890            eventhandler: *mut core::ffi::c_void,
40891            token: *mut i64,
40892        ) -> windows_core::HRESULT {
40893            unsafe {
40894                let this: &Identity =
40895                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40896                ICoreWebView2_24_Impl::add_NotificationReceived(
40897                    this,
40898                    core::mem::transmute_copy(&eventhandler),
40899                    core::mem::transmute_copy(&token),
40900                )
40901                .into()
40902            }
40903        }
40904        unsafe extern "system" fn remove_NotificationReceived<
40905            Identity: ICoreWebView2_24_Impl,
40906            const OFFSET: isize,
40907        >(
40908            this: *mut core::ffi::c_void,
40909            token: i64,
40910        ) -> windows_core::HRESULT {
40911            unsafe {
40912                let this: &Identity =
40913                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
40914                ICoreWebView2_24_Impl::remove_NotificationReceived(
40915                    this,
40916                    core::mem::transmute_copy(&token),
40917                )
40918                .into()
40919            }
40920        }
40921        Self {
40922            base__: ICoreWebView2_23_Vtbl::new::<Identity, OFFSET>(),
40923            add_NotificationReceived: add_NotificationReceived::<Identity, OFFSET>,
40924            remove_NotificationReceived: remove_NotificationReceived::<Identity, OFFSET>,
40925        }
40926    }
40927    pub fn matches(iid: &windows_core::GUID) -> bool {
40928        iid == &<ICoreWebView2_24 as windows_core::Interface>::IID
40929            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
40930            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
40931            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
40932            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
40933            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
40934            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
40935            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
40936            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
40937            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
40938            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
40939            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
40940            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
40941            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
40942            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
40943            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
40944            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
40945            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
40946            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
40947            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
40948            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
40949            || iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
40950            || iid == &<ICoreWebView2_22 as windows_core::Interface>::IID
40951            || iid == &<ICoreWebView2_23 as windows_core::Interface>::IID
40952    }
40953}
40954impl windows_core::RuntimeName for ICoreWebView2_24 {}
40955windows_core::imp::define_interface!(
40956    ICoreWebView2_25,
40957    ICoreWebView2_25_Vtbl,
40958    0xb5a86092_df50_5b4f_a17b_6c8f8b40b771
40959);
40960impl core::ops::Deref for ICoreWebView2_25 {
40961    type Target = ICoreWebView2_24;
40962    fn deref(&self) -> &Self::Target {
40963        unsafe { core::mem::transmute(self) }
40964    }
40965}
40966windows_core::imp::interface_hierarchy!(
40967    ICoreWebView2_25,
40968    windows_core::IUnknown,
40969    ICoreWebView2,
40970    ICoreWebView2_2,
40971    ICoreWebView2_3,
40972    ICoreWebView2_4,
40973    ICoreWebView2_5,
40974    ICoreWebView2_6,
40975    ICoreWebView2_7,
40976    ICoreWebView2_8,
40977    ICoreWebView2_9,
40978    ICoreWebView2_10,
40979    ICoreWebView2_11,
40980    ICoreWebView2_12,
40981    ICoreWebView2_13,
40982    ICoreWebView2_14,
40983    ICoreWebView2_15,
40984    ICoreWebView2_16,
40985    ICoreWebView2_17,
40986    ICoreWebView2_18,
40987    ICoreWebView2_19,
40988    ICoreWebView2_20,
40989    ICoreWebView2_21,
40990    ICoreWebView2_22,
40991    ICoreWebView2_23,
40992    ICoreWebView2_24
40993);
40994impl ICoreWebView2_25 {
40995    pub unsafe fn add_SaveAsUIShowing<P0>(
40996        &self,
40997        eventhandler: P0,
40998        token: *mut i64,
40999    ) -> windows_core::Result<()>
41000    where
41001        P0: windows_core::Param<ICoreWebView2SaveAsUIShowingEventHandler>,
41002    {
41003        unsafe {
41004            (windows_core::Interface::vtable(self).add_SaveAsUIShowing)(
41005                windows_core::Interface::as_raw(self),
41006                eventhandler.param().abi(),
41007                token as _,
41008            )
41009            .ok()
41010        }
41011    }
41012    pub unsafe fn remove_SaveAsUIShowing(&self, token: i64) -> windows_core::Result<()> {
41013        unsafe {
41014            (windows_core::Interface::vtable(self).remove_SaveAsUIShowing)(
41015                windows_core::Interface::as_raw(self),
41016                token,
41017            )
41018            .ok()
41019        }
41020    }
41021    pub unsafe fn ShowSaveAsUI<P0>(&self, handler: P0) -> windows_core::Result<()>
41022    where
41023        P0: windows_core::Param<ICoreWebView2ShowSaveAsUICompletedHandler>,
41024    {
41025        unsafe {
41026            (windows_core::Interface::vtable(self).ShowSaveAsUI)(
41027                windows_core::Interface::as_raw(self),
41028                handler.param().abi(),
41029            )
41030            .ok()
41031        }
41032    }
41033}
41034#[repr(C)]
41035#[doc(hidden)]
41036pub struct ICoreWebView2_25_Vtbl {
41037    pub base__: ICoreWebView2_24_Vtbl,
41038    pub add_SaveAsUIShowing: unsafe extern "system" fn(
41039        *mut core::ffi::c_void,
41040        *mut core::ffi::c_void,
41041        *mut i64,
41042    ) -> windows_core::HRESULT,
41043    pub remove_SaveAsUIShowing:
41044        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
41045    pub ShowSaveAsUI: unsafe extern "system" fn(
41046        *mut core::ffi::c_void,
41047        *mut core::ffi::c_void,
41048    ) -> windows_core::HRESULT,
41049}
41050pub trait ICoreWebView2_25_Impl: ICoreWebView2_24_Impl {
41051    fn add_SaveAsUIShowing(
41052        &self,
41053        eventhandler: windows_core::Ref<'_, ICoreWebView2SaveAsUIShowingEventHandler>,
41054        token: *mut i64,
41055    ) -> windows_core::Result<()>;
41056    fn remove_SaveAsUIShowing(&self, token: i64) -> windows_core::Result<()>;
41057    fn ShowSaveAsUI(
41058        &self,
41059        handler: windows_core::Ref<'_, ICoreWebView2ShowSaveAsUICompletedHandler>,
41060    ) -> windows_core::Result<()>;
41061}
41062impl ICoreWebView2_25_Vtbl {
41063    pub const fn new<Identity: ICoreWebView2_25_Impl, const OFFSET: isize>() -> Self {
41064        unsafe extern "system" fn add_SaveAsUIShowing<
41065            Identity: ICoreWebView2_25_Impl,
41066            const OFFSET: isize,
41067        >(
41068            this: *mut core::ffi::c_void,
41069            eventhandler: *mut core::ffi::c_void,
41070            token: *mut i64,
41071        ) -> windows_core::HRESULT {
41072            unsafe {
41073                let this: &Identity =
41074                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41075                ICoreWebView2_25_Impl::add_SaveAsUIShowing(
41076                    this,
41077                    core::mem::transmute_copy(&eventhandler),
41078                    core::mem::transmute_copy(&token),
41079                )
41080                .into()
41081            }
41082        }
41083        unsafe extern "system" fn remove_SaveAsUIShowing<
41084            Identity: ICoreWebView2_25_Impl,
41085            const OFFSET: isize,
41086        >(
41087            this: *mut core::ffi::c_void,
41088            token: i64,
41089        ) -> windows_core::HRESULT {
41090            unsafe {
41091                let this: &Identity =
41092                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41093                ICoreWebView2_25_Impl::remove_SaveAsUIShowing(
41094                    this,
41095                    core::mem::transmute_copy(&token),
41096                )
41097                .into()
41098            }
41099        }
41100        unsafe extern "system" fn ShowSaveAsUI<
41101            Identity: ICoreWebView2_25_Impl,
41102            const OFFSET: isize,
41103        >(
41104            this: *mut core::ffi::c_void,
41105            handler: *mut core::ffi::c_void,
41106        ) -> windows_core::HRESULT {
41107            unsafe {
41108                let this: &Identity =
41109                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41110                ICoreWebView2_25_Impl::ShowSaveAsUI(this, core::mem::transmute_copy(&handler))
41111                    .into()
41112            }
41113        }
41114        Self {
41115            base__: ICoreWebView2_24_Vtbl::new::<Identity, OFFSET>(),
41116            add_SaveAsUIShowing: add_SaveAsUIShowing::<Identity, OFFSET>,
41117            remove_SaveAsUIShowing: remove_SaveAsUIShowing::<Identity, OFFSET>,
41118            ShowSaveAsUI: ShowSaveAsUI::<Identity, OFFSET>,
41119        }
41120    }
41121    pub fn matches(iid: &windows_core::GUID) -> bool {
41122        iid == &<ICoreWebView2_25 as windows_core::Interface>::IID
41123            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
41124            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
41125            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
41126            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
41127            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
41128            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
41129            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
41130            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
41131            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
41132            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
41133            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
41134            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
41135            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
41136            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
41137            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
41138            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
41139            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
41140            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
41141            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
41142            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
41143            || iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
41144            || iid == &<ICoreWebView2_22 as windows_core::Interface>::IID
41145            || iid == &<ICoreWebView2_23 as windows_core::Interface>::IID
41146            || iid == &<ICoreWebView2_24 as windows_core::Interface>::IID
41147    }
41148}
41149impl windows_core::RuntimeName for ICoreWebView2_25 {}
41150windows_core::imp::define_interface!(
41151    ICoreWebView2_26,
41152    ICoreWebView2_26_Vtbl,
41153    0x806268b8_f897_5685_88e5_c45fca0b1a48
41154);
41155impl core::ops::Deref for ICoreWebView2_26 {
41156    type Target = ICoreWebView2_25;
41157    fn deref(&self) -> &Self::Target {
41158        unsafe { core::mem::transmute(self) }
41159    }
41160}
41161windows_core::imp::interface_hierarchy!(
41162    ICoreWebView2_26,
41163    windows_core::IUnknown,
41164    ICoreWebView2,
41165    ICoreWebView2_2,
41166    ICoreWebView2_3,
41167    ICoreWebView2_4,
41168    ICoreWebView2_5,
41169    ICoreWebView2_6,
41170    ICoreWebView2_7,
41171    ICoreWebView2_8,
41172    ICoreWebView2_9,
41173    ICoreWebView2_10,
41174    ICoreWebView2_11,
41175    ICoreWebView2_12,
41176    ICoreWebView2_13,
41177    ICoreWebView2_14,
41178    ICoreWebView2_15,
41179    ICoreWebView2_16,
41180    ICoreWebView2_17,
41181    ICoreWebView2_18,
41182    ICoreWebView2_19,
41183    ICoreWebView2_20,
41184    ICoreWebView2_21,
41185    ICoreWebView2_22,
41186    ICoreWebView2_23,
41187    ICoreWebView2_24,
41188    ICoreWebView2_25
41189);
41190impl ICoreWebView2_26 {
41191    pub unsafe fn add_SaveFileSecurityCheckStarting<P0>(
41192        &self,
41193        eventhandler: P0,
41194        token: *mut i64,
41195    ) -> windows_core::Result<()>
41196    where
41197        P0: windows_core::Param<ICoreWebView2SaveFileSecurityCheckStartingEventHandler>,
41198    {
41199        unsafe {
41200            (windows_core::Interface::vtable(self).add_SaveFileSecurityCheckStarting)(
41201                windows_core::Interface::as_raw(self),
41202                eventhandler.param().abi(),
41203                token as _,
41204            )
41205            .ok()
41206        }
41207    }
41208    pub unsafe fn remove_SaveFileSecurityCheckStarting(
41209        &self,
41210        token: i64,
41211    ) -> windows_core::Result<()> {
41212        unsafe {
41213            (windows_core::Interface::vtable(self).remove_SaveFileSecurityCheckStarting)(
41214                windows_core::Interface::as_raw(self),
41215                token,
41216            )
41217            .ok()
41218        }
41219    }
41220}
41221#[repr(C)]
41222#[doc(hidden)]
41223pub struct ICoreWebView2_26_Vtbl {
41224    pub base__: ICoreWebView2_25_Vtbl,
41225    pub add_SaveFileSecurityCheckStarting: unsafe extern "system" fn(
41226        *mut core::ffi::c_void,
41227        *mut core::ffi::c_void,
41228        *mut i64,
41229    ) -> windows_core::HRESULT,
41230    pub remove_SaveFileSecurityCheckStarting:
41231        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
41232}
41233pub trait ICoreWebView2_26_Impl: ICoreWebView2_25_Impl {
41234    fn add_SaveFileSecurityCheckStarting(
41235        &self,
41236        eventhandler: windows_core::Ref<'_, ICoreWebView2SaveFileSecurityCheckStartingEventHandler>,
41237        token: *mut i64,
41238    ) -> windows_core::Result<()>;
41239    fn remove_SaveFileSecurityCheckStarting(&self, token: i64) -> windows_core::Result<()>;
41240}
41241impl ICoreWebView2_26_Vtbl {
41242    pub const fn new<Identity: ICoreWebView2_26_Impl, const OFFSET: isize>() -> Self {
41243        unsafe extern "system" fn add_SaveFileSecurityCheckStarting<
41244            Identity: ICoreWebView2_26_Impl,
41245            const OFFSET: isize,
41246        >(
41247            this: *mut core::ffi::c_void,
41248            eventhandler: *mut core::ffi::c_void,
41249            token: *mut i64,
41250        ) -> windows_core::HRESULT {
41251            unsafe {
41252                let this: &Identity =
41253                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41254                ICoreWebView2_26_Impl::add_SaveFileSecurityCheckStarting(
41255                    this,
41256                    core::mem::transmute_copy(&eventhandler),
41257                    core::mem::transmute_copy(&token),
41258                )
41259                .into()
41260            }
41261        }
41262        unsafe extern "system" fn remove_SaveFileSecurityCheckStarting<
41263            Identity: ICoreWebView2_26_Impl,
41264            const OFFSET: isize,
41265        >(
41266            this: *mut core::ffi::c_void,
41267            token: i64,
41268        ) -> windows_core::HRESULT {
41269            unsafe {
41270                let this: &Identity =
41271                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41272                ICoreWebView2_26_Impl::remove_SaveFileSecurityCheckStarting(
41273                    this,
41274                    core::mem::transmute_copy(&token),
41275                )
41276                .into()
41277            }
41278        }
41279        Self {
41280            base__: ICoreWebView2_25_Vtbl::new::<Identity, OFFSET>(),
41281            add_SaveFileSecurityCheckStarting: add_SaveFileSecurityCheckStarting::<Identity, OFFSET>,
41282            remove_SaveFileSecurityCheckStarting: remove_SaveFileSecurityCheckStarting::<
41283                Identity,
41284                OFFSET,
41285            >,
41286        }
41287    }
41288    pub fn matches(iid: &windows_core::GUID) -> bool {
41289        iid == &<ICoreWebView2_26 as windows_core::Interface>::IID
41290            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
41291            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
41292            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
41293            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
41294            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
41295            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
41296            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
41297            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
41298            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
41299            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
41300            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
41301            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
41302            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
41303            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
41304            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
41305            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
41306            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
41307            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
41308            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
41309            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
41310            || iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
41311            || iid == &<ICoreWebView2_22 as windows_core::Interface>::IID
41312            || iid == &<ICoreWebView2_23 as windows_core::Interface>::IID
41313            || iid == &<ICoreWebView2_24 as windows_core::Interface>::IID
41314            || iid == &<ICoreWebView2_25 as windows_core::Interface>::IID
41315    }
41316}
41317impl windows_core::RuntimeName for ICoreWebView2_26 {}
41318windows_core::imp::define_interface!(
41319    ICoreWebView2_27,
41320    ICoreWebView2_27_Vtbl,
41321    0x00fbe33b_8c07_517c_aa23_0ddd4b5f6fa0
41322);
41323impl core::ops::Deref for ICoreWebView2_27 {
41324    type Target = ICoreWebView2_26;
41325    fn deref(&self) -> &Self::Target {
41326        unsafe { core::mem::transmute(self) }
41327    }
41328}
41329windows_core::imp::interface_hierarchy!(
41330    ICoreWebView2_27,
41331    windows_core::IUnknown,
41332    ICoreWebView2,
41333    ICoreWebView2_2,
41334    ICoreWebView2_3,
41335    ICoreWebView2_4,
41336    ICoreWebView2_5,
41337    ICoreWebView2_6,
41338    ICoreWebView2_7,
41339    ICoreWebView2_8,
41340    ICoreWebView2_9,
41341    ICoreWebView2_10,
41342    ICoreWebView2_11,
41343    ICoreWebView2_12,
41344    ICoreWebView2_13,
41345    ICoreWebView2_14,
41346    ICoreWebView2_15,
41347    ICoreWebView2_16,
41348    ICoreWebView2_17,
41349    ICoreWebView2_18,
41350    ICoreWebView2_19,
41351    ICoreWebView2_20,
41352    ICoreWebView2_21,
41353    ICoreWebView2_22,
41354    ICoreWebView2_23,
41355    ICoreWebView2_24,
41356    ICoreWebView2_25,
41357    ICoreWebView2_26
41358);
41359impl ICoreWebView2_27 {
41360    pub unsafe fn add_ScreenCaptureStarting<P0>(
41361        &self,
41362        eventhandler: P0,
41363        token: *mut i64,
41364    ) -> windows_core::Result<()>
41365    where
41366        P0: windows_core::Param<ICoreWebView2ScreenCaptureStartingEventHandler>,
41367    {
41368        unsafe {
41369            (windows_core::Interface::vtable(self).add_ScreenCaptureStarting)(
41370                windows_core::Interface::as_raw(self),
41371                eventhandler.param().abi(),
41372                token as _,
41373            )
41374            .ok()
41375        }
41376    }
41377    pub unsafe fn remove_ScreenCaptureStarting(&self, token: i64) -> windows_core::Result<()> {
41378        unsafe {
41379            (windows_core::Interface::vtable(self).remove_ScreenCaptureStarting)(
41380                windows_core::Interface::as_raw(self),
41381                token,
41382            )
41383            .ok()
41384        }
41385    }
41386}
41387#[repr(C)]
41388#[doc(hidden)]
41389pub struct ICoreWebView2_27_Vtbl {
41390    pub base__: ICoreWebView2_26_Vtbl,
41391    pub add_ScreenCaptureStarting: unsafe extern "system" fn(
41392        *mut core::ffi::c_void,
41393        *mut core::ffi::c_void,
41394        *mut i64,
41395    ) -> windows_core::HRESULT,
41396    pub remove_ScreenCaptureStarting:
41397        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
41398}
41399pub trait ICoreWebView2_27_Impl: ICoreWebView2_26_Impl {
41400    fn add_ScreenCaptureStarting(
41401        &self,
41402        eventhandler: windows_core::Ref<'_, ICoreWebView2ScreenCaptureStartingEventHandler>,
41403        token: *mut i64,
41404    ) -> windows_core::Result<()>;
41405    fn remove_ScreenCaptureStarting(&self, token: i64) -> windows_core::Result<()>;
41406}
41407impl ICoreWebView2_27_Vtbl {
41408    pub const fn new<Identity: ICoreWebView2_27_Impl, const OFFSET: isize>() -> Self {
41409        unsafe extern "system" fn add_ScreenCaptureStarting<
41410            Identity: ICoreWebView2_27_Impl,
41411            const OFFSET: isize,
41412        >(
41413            this: *mut core::ffi::c_void,
41414            eventhandler: *mut core::ffi::c_void,
41415            token: *mut i64,
41416        ) -> windows_core::HRESULT {
41417            unsafe {
41418                let this: &Identity =
41419                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41420                ICoreWebView2_27_Impl::add_ScreenCaptureStarting(
41421                    this,
41422                    core::mem::transmute_copy(&eventhandler),
41423                    core::mem::transmute_copy(&token),
41424                )
41425                .into()
41426            }
41427        }
41428        unsafe extern "system" fn remove_ScreenCaptureStarting<
41429            Identity: ICoreWebView2_27_Impl,
41430            const OFFSET: isize,
41431        >(
41432            this: *mut core::ffi::c_void,
41433            token: i64,
41434        ) -> windows_core::HRESULT {
41435            unsafe {
41436                let this: &Identity =
41437                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41438                ICoreWebView2_27_Impl::remove_ScreenCaptureStarting(
41439                    this,
41440                    core::mem::transmute_copy(&token),
41441                )
41442                .into()
41443            }
41444        }
41445        Self {
41446            base__: ICoreWebView2_26_Vtbl::new::<Identity, OFFSET>(),
41447            add_ScreenCaptureStarting: add_ScreenCaptureStarting::<Identity, OFFSET>,
41448            remove_ScreenCaptureStarting: remove_ScreenCaptureStarting::<Identity, OFFSET>,
41449        }
41450    }
41451    pub fn matches(iid: &windows_core::GUID) -> bool {
41452        iid == &<ICoreWebView2_27 as windows_core::Interface>::IID
41453            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
41454            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
41455            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
41456            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
41457            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
41458            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
41459            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
41460            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
41461            || iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
41462            || iid == &<ICoreWebView2_10 as windows_core::Interface>::IID
41463            || iid == &<ICoreWebView2_11 as windows_core::Interface>::IID
41464            || iid == &<ICoreWebView2_12 as windows_core::Interface>::IID
41465            || iid == &<ICoreWebView2_13 as windows_core::Interface>::IID
41466            || iid == &<ICoreWebView2_14 as windows_core::Interface>::IID
41467            || iid == &<ICoreWebView2_15 as windows_core::Interface>::IID
41468            || iid == &<ICoreWebView2_16 as windows_core::Interface>::IID
41469            || iid == &<ICoreWebView2_17 as windows_core::Interface>::IID
41470            || iid == &<ICoreWebView2_18 as windows_core::Interface>::IID
41471            || iid == &<ICoreWebView2_19 as windows_core::Interface>::IID
41472            || iid == &<ICoreWebView2_20 as windows_core::Interface>::IID
41473            || iid == &<ICoreWebView2_21 as windows_core::Interface>::IID
41474            || iid == &<ICoreWebView2_22 as windows_core::Interface>::IID
41475            || iid == &<ICoreWebView2_23 as windows_core::Interface>::IID
41476            || iid == &<ICoreWebView2_24 as windows_core::Interface>::IID
41477            || iid == &<ICoreWebView2_25 as windows_core::Interface>::IID
41478            || iid == &<ICoreWebView2_26 as windows_core::Interface>::IID
41479    }
41480}
41481impl windows_core::RuntimeName for ICoreWebView2_27 {}
41482windows_core::imp::define_interface!(
41483    ICoreWebView2_3,
41484    ICoreWebView2_3_Vtbl,
41485    0xa0d6df20_3b92_416d_aa0c_437a9c727857
41486);
41487impl core::ops::Deref for ICoreWebView2_3 {
41488    type Target = ICoreWebView2_2;
41489    fn deref(&self) -> &Self::Target {
41490        unsafe { core::mem::transmute(self) }
41491    }
41492}
41493windows_core::imp::interface_hierarchy!(
41494    ICoreWebView2_3,
41495    windows_core::IUnknown,
41496    ICoreWebView2,
41497    ICoreWebView2_2
41498);
41499impl ICoreWebView2_3 {
41500    pub unsafe fn TrySuspend<P0>(&self, handler: P0) -> windows_core::Result<()>
41501    where
41502        P0: windows_core::Param<ICoreWebView2TrySuspendCompletedHandler>,
41503    {
41504        unsafe {
41505            (windows_core::Interface::vtable(self).TrySuspend)(
41506                windows_core::Interface::as_raw(self),
41507                handler.param().abi(),
41508            )
41509            .ok()
41510        }
41511    }
41512    pub unsafe fn Resume(&self) -> windows_core::Result<()> {
41513        unsafe {
41514            (windows_core::Interface::vtable(self).Resume)(windows_core::Interface::as_raw(self))
41515                .ok()
41516        }
41517    }
41518    pub unsafe fn IsSuspended(
41519        &self,
41520        issuspended: *mut windows_core::BOOL,
41521    ) -> windows_core::Result<()> {
41522        unsafe {
41523            (windows_core::Interface::vtable(self).IsSuspended)(
41524                windows_core::Interface::as_raw(self),
41525                issuspended as _,
41526            )
41527            .ok()
41528        }
41529    }
41530    pub unsafe fn SetVirtualHostNameToFolderMapping<P0, P1>(
41531        &self,
41532        hostname: P0,
41533        folderpath: P1,
41534        accesskind: COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND,
41535    ) -> windows_core::Result<()>
41536    where
41537        P0: windows_core::Param<windows_core::PCWSTR>,
41538        P1: windows_core::Param<windows_core::PCWSTR>,
41539    {
41540        unsafe {
41541            (windows_core::Interface::vtable(self).SetVirtualHostNameToFolderMapping)(
41542                windows_core::Interface::as_raw(self),
41543                hostname.param().abi(),
41544                folderpath.param().abi(),
41545                accesskind,
41546            )
41547            .ok()
41548        }
41549    }
41550    pub unsafe fn ClearVirtualHostNameToFolderMapping<P0>(
41551        &self,
41552        hostname: P0,
41553    ) -> windows_core::Result<()>
41554    where
41555        P0: windows_core::Param<windows_core::PCWSTR>,
41556    {
41557        unsafe {
41558            (windows_core::Interface::vtable(self).ClearVirtualHostNameToFolderMapping)(
41559                windows_core::Interface::as_raw(self),
41560                hostname.param().abi(),
41561            )
41562            .ok()
41563        }
41564    }
41565}
41566#[repr(C)]
41567#[doc(hidden)]
41568pub struct ICoreWebView2_3_Vtbl {
41569    pub base__: ICoreWebView2_2_Vtbl,
41570    pub TrySuspend: unsafe extern "system" fn(
41571        *mut core::ffi::c_void,
41572        *mut core::ffi::c_void,
41573    ) -> windows_core::HRESULT,
41574    pub Resume: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
41575    pub IsSuspended: unsafe extern "system" fn(
41576        *mut core::ffi::c_void,
41577        *mut windows_core::BOOL,
41578    ) -> windows_core::HRESULT,
41579    pub SetVirtualHostNameToFolderMapping: unsafe extern "system" fn(
41580        *mut core::ffi::c_void,
41581        windows_core::PCWSTR,
41582        windows_core::PCWSTR,
41583        COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND,
41584    ) -> windows_core::HRESULT,
41585    pub ClearVirtualHostNameToFolderMapping: unsafe extern "system" fn(
41586        *mut core::ffi::c_void,
41587        windows_core::PCWSTR,
41588    )
41589        -> windows_core::HRESULT,
41590}
41591pub trait ICoreWebView2_3_Impl: ICoreWebView2_2_Impl {
41592    fn TrySuspend(
41593        &self,
41594        handler: windows_core::Ref<'_, ICoreWebView2TrySuspendCompletedHandler>,
41595    ) -> windows_core::Result<()>;
41596    fn Resume(&self) -> windows_core::Result<()>;
41597    fn IsSuspended(&self, issuspended: *mut windows_core::BOOL) -> windows_core::Result<()>;
41598    fn SetVirtualHostNameToFolderMapping(
41599        &self,
41600        hostname: &windows_core::PCWSTR,
41601        folderpath: &windows_core::PCWSTR,
41602        accesskind: COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND,
41603    ) -> windows_core::Result<()>;
41604    fn ClearVirtualHostNameToFolderMapping(
41605        &self,
41606        hostname: &windows_core::PCWSTR,
41607    ) -> windows_core::Result<()>;
41608}
41609impl ICoreWebView2_3_Vtbl {
41610    pub const fn new<Identity: ICoreWebView2_3_Impl, const OFFSET: isize>() -> Self {
41611        unsafe extern "system" fn TrySuspend<
41612            Identity: ICoreWebView2_3_Impl,
41613            const OFFSET: isize,
41614        >(
41615            this: *mut core::ffi::c_void,
41616            handler: *mut core::ffi::c_void,
41617        ) -> windows_core::HRESULT {
41618            unsafe {
41619                let this: &Identity =
41620                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41621                ICoreWebView2_3_Impl::TrySuspend(this, core::mem::transmute_copy(&handler)).into()
41622            }
41623        }
41624        unsafe extern "system" fn Resume<Identity: ICoreWebView2_3_Impl, const OFFSET: isize>(
41625            this: *mut core::ffi::c_void,
41626        ) -> windows_core::HRESULT {
41627            unsafe {
41628                let this: &Identity =
41629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41630                ICoreWebView2_3_Impl::Resume(this).into()
41631            }
41632        }
41633        unsafe extern "system" fn IsSuspended<
41634            Identity: ICoreWebView2_3_Impl,
41635            const OFFSET: isize,
41636        >(
41637            this: *mut core::ffi::c_void,
41638            issuspended: *mut windows_core::BOOL,
41639        ) -> windows_core::HRESULT {
41640            unsafe {
41641                let this: &Identity =
41642                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41643                ICoreWebView2_3_Impl::IsSuspended(this, core::mem::transmute_copy(&issuspended))
41644                    .into()
41645            }
41646        }
41647        unsafe extern "system" fn SetVirtualHostNameToFolderMapping<
41648            Identity: ICoreWebView2_3_Impl,
41649            const OFFSET: isize,
41650        >(
41651            this: *mut core::ffi::c_void,
41652            hostname: windows_core::PCWSTR,
41653            folderpath: windows_core::PCWSTR,
41654            accesskind: COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND,
41655        ) -> windows_core::HRESULT {
41656            unsafe {
41657                let this: &Identity =
41658                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41659                ICoreWebView2_3_Impl::SetVirtualHostNameToFolderMapping(
41660                    this,
41661                    core::mem::transmute(&hostname),
41662                    core::mem::transmute(&folderpath),
41663                    core::mem::transmute_copy(&accesskind),
41664                )
41665                .into()
41666            }
41667        }
41668        unsafe extern "system" fn ClearVirtualHostNameToFolderMapping<
41669            Identity: ICoreWebView2_3_Impl,
41670            const OFFSET: isize,
41671        >(
41672            this: *mut core::ffi::c_void,
41673            hostname: windows_core::PCWSTR,
41674        ) -> windows_core::HRESULT {
41675            unsafe {
41676                let this: &Identity =
41677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41678                ICoreWebView2_3_Impl::ClearVirtualHostNameToFolderMapping(
41679                    this,
41680                    core::mem::transmute(&hostname),
41681                )
41682                .into()
41683            }
41684        }
41685        Self {
41686            base__: ICoreWebView2_2_Vtbl::new::<Identity, OFFSET>(),
41687            TrySuspend: TrySuspend::<Identity, OFFSET>,
41688            Resume: Resume::<Identity, OFFSET>,
41689            IsSuspended: IsSuspended::<Identity, OFFSET>,
41690            SetVirtualHostNameToFolderMapping: SetVirtualHostNameToFolderMapping::<Identity, OFFSET>,
41691            ClearVirtualHostNameToFolderMapping: ClearVirtualHostNameToFolderMapping::<
41692                Identity,
41693                OFFSET,
41694            >,
41695        }
41696    }
41697    pub fn matches(iid: &windows_core::GUID) -> bool {
41698        iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
41699            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
41700            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
41701    }
41702}
41703impl windows_core::RuntimeName for ICoreWebView2_3 {}
41704windows_core::imp::define_interface!(
41705    ICoreWebView2_4,
41706    ICoreWebView2_4_Vtbl,
41707    0x20d02d59_6df2_42dc_bd06_f98a694b1302
41708);
41709impl core::ops::Deref for ICoreWebView2_4 {
41710    type Target = ICoreWebView2_3;
41711    fn deref(&self) -> &Self::Target {
41712        unsafe { core::mem::transmute(self) }
41713    }
41714}
41715windows_core::imp::interface_hierarchy!(
41716    ICoreWebView2_4,
41717    windows_core::IUnknown,
41718    ICoreWebView2,
41719    ICoreWebView2_2,
41720    ICoreWebView2_3
41721);
41722impl ICoreWebView2_4 {
41723    pub unsafe fn add_FrameCreated<P0>(
41724        &self,
41725        eventhandler: P0,
41726        token: *mut i64,
41727    ) -> windows_core::Result<()>
41728    where
41729        P0: windows_core::Param<ICoreWebView2FrameCreatedEventHandler>,
41730    {
41731        unsafe {
41732            (windows_core::Interface::vtable(self).add_FrameCreated)(
41733                windows_core::Interface::as_raw(self),
41734                eventhandler.param().abi(),
41735                token as _,
41736            )
41737            .ok()
41738        }
41739    }
41740    pub unsafe fn remove_FrameCreated(&self, token: i64) -> windows_core::Result<()> {
41741        unsafe {
41742            (windows_core::Interface::vtable(self).remove_FrameCreated)(
41743                windows_core::Interface::as_raw(self),
41744                token,
41745            )
41746            .ok()
41747        }
41748    }
41749    pub unsafe fn add_DownloadStarting<P0>(
41750        &self,
41751        eventhandler: P0,
41752        token: *mut i64,
41753    ) -> windows_core::Result<()>
41754    where
41755        P0: windows_core::Param<ICoreWebView2DownloadStartingEventHandler>,
41756    {
41757        unsafe {
41758            (windows_core::Interface::vtable(self).add_DownloadStarting)(
41759                windows_core::Interface::as_raw(self),
41760                eventhandler.param().abi(),
41761                token as _,
41762            )
41763            .ok()
41764        }
41765    }
41766    pub unsafe fn remove_DownloadStarting(&self, token: i64) -> windows_core::Result<()> {
41767        unsafe {
41768            (windows_core::Interface::vtable(self).remove_DownloadStarting)(
41769                windows_core::Interface::as_raw(self),
41770                token,
41771            )
41772            .ok()
41773        }
41774    }
41775}
41776#[repr(C)]
41777#[doc(hidden)]
41778pub struct ICoreWebView2_4_Vtbl {
41779    pub base__: ICoreWebView2_3_Vtbl,
41780    pub add_FrameCreated: unsafe extern "system" fn(
41781        *mut core::ffi::c_void,
41782        *mut core::ffi::c_void,
41783        *mut i64,
41784    ) -> windows_core::HRESULT,
41785    pub remove_FrameCreated:
41786        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
41787    pub add_DownloadStarting: unsafe extern "system" fn(
41788        *mut core::ffi::c_void,
41789        *mut core::ffi::c_void,
41790        *mut i64,
41791    ) -> windows_core::HRESULT,
41792    pub remove_DownloadStarting:
41793        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
41794}
41795pub trait ICoreWebView2_4_Impl: ICoreWebView2_3_Impl {
41796    fn add_FrameCreated(
41797        &self,
41798        eventhandler: windows_core::Ref<'_, ICoreWebView2FrameCreatedEventHandler>,
41799        token: *mut i64,
41800    ) -> windows_core::Result<()>;
41801    fn remove_FrameCreated(&self, token: i64) -> windows_core::Result<()>;
41802    fn add_DownloadStarting(
41803        &self,
41804        eventhandler: windows_core::Ref<'_, ICoreWebView2DownloadStartingEventHandler>,
41805        token: *mut i64,
41806    ) -> windows_core::Result<()>;
41807    fn remove_DownloadStarting(&self, token: i64) -> windows_core::Result<()>;
41808}
41809impl ICoreWebView2_4_Vtbl {
41810    pub const fn new<Identity: ICoreWebView2_4_Impl, const OFFSET: isize>() -> Self {
41811        unsafe extern "system" fn add_FrameCreated<
41812            Identity: ICoreWebView2_4_Impl,
41813            const OFFSET: isize,
41814        >(
41815            this: *mut core::ffi::c_void,
41816            eventhandler: *mut core::ffi::c_void,
41817            token: *mut i64,
41818        ) -> windows_core::HRESULT {
41819            unsafe {
41820                let this: &Identity =
41821                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41822                ICoreWebView2_4_Impl::add_FrameCreated(
41823                    this,
41824                    core::mem::transmute_copy(&eventhandler),
41825                    core::mem::transmute_copy(&token),
41826                )
41827                .into()
41828            }
41829        }
41830        unsafe extern "system" fn remove_FrameCreated<
41831            Identity: ICoreWebView2_4_Impl,
41832            const OFFSET: isize,
41833        >(
41834            this: *mut core::ffi::c_void,
41835            token: i64,
41836        ) -> windows_core::HRESULT {
41837            unsafe {
41838                let this: &Identity =
41839                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41840                ICoreWebView2_4_Impl::remove_FrameCreated(this, core::mem::transmute_copy(&token))
41841                    .into()
41842            }
41843        }
41844        unsafe extern "system" fn add_DownloadStarting<
41845            Identity: ICoreWebView2_4_Impl,
41846            const OFFSET: isize,
41847        >(
41848            this: *mut core::ffi::c_void,
41849            eventhandler: *mut core::ffi::c_void,
41850            token: *mut i64,
41851        ) -> windows_core::HRESULT {
41852            unsafe {
41853                let this: &Identity =
41854                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41855                ICoreWebView2_4_Impl::add_DownloadStarting(
41856                    this,
41857                    core::mem::transmute_copy(&eventhandler),
41858                    core::mem::transmute_copy(&token),
41859                )
41860                .into()
41861            }
41862        }
41863        unsafe extern "system" fn remove_DownloadStarting<
41864            Identity: ICoreWebView2_4_Impl,
41865            const OFFSET: isize,
41866        >(
41867            this: *mut core::ffi::c_void,
41868            token: i64,
41869        ) -> windows_core::HRESULT {
41870            unsafe {
41871                let this: &Identity =
41872                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41873                ICoreWebView2_4_Impl::remove_DownloadStarting(
41874                    this,
41875                    core::mem::transmute_copy(&token),
41876                )
41877                .into()
41878            }
41879        }
41880        Self {
41881            base__: ICoreWebView2_3_Vtbl::new::<Identity, OFFSET>(),
41882            add_FrameCreated: add_FrameCreated::<Identity, OFFSET>,
41883            remove_FrameCreated: remove_FrameCreated::<Identity, OFFSET>,
41884            add_DownloadStarting: add_DownloadStarting::<Identity, OFFSET>,
41885            remove_DownloadStarting: remove_DownloadStarting::<Identity, OFFSET>,
41886        }
41887    }
41888    pub fn matches(iid: &windows_core::GUID) -> bool {
41889        iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
41890            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
41891            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
41892            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
41893    }
41894}
41895impl windows_core::RuntimeName for ICoreWebView2_4 {}
41896windows_core::imp::define_interface!(
41897    ICoreWebView2_5,
41898    ICoreWebView2_5_Vtbl,
41899    0xbedb11b8_d63c_11eb_b8bc_0242ac130003
41900);
41901impl core::ops::Deref for ICoreWebView2_5 {
41902    type Target = ICoreWebView2_4;
41903    fn deref(&self) -> &Self::Target {
41904        unsafe { core::mem::transmute(self) }
41905    }
41906}
41907windows_core::imp::interface_hierarchy!(
41908    ICoreWebView2_5,
41909    windows_core::IUnknown,
41910    ICoreWebView2,
41911    ICoreWebView2_2,
41912    ICoreWebView2_3,
41913    ICoreWebView2_4
41914);
41915impl ICoreWebView2_5 {
41916    pub unsafe fn add_ClientCertificateRequested<P0>(
41917        &self,
41918        eventhandler: P0,
41919        token: *mut i64,
41920    ) -> windows_core::Result<()>
41921    where
41922        P0: windows_core::Param<ICoreWebView2ClientCertificateRequestedEventHandler>,
41923    {
41924        unsafe {
41925            (windows_core::Interface::vtable(self).add_ClientCertificateRequested)(
41926                windows_core::Interface::as_raw(self),
41927                eventhandler.param().abi(),
41928                token as _,
41929            )
41930            .ok()
41931        }
41932    }
41933    pub unsafe fn remove_ClientCertificateRequested(&self, token: i64) -> windows_core::Result<()> {
41934        unsafe {
41935            (windows_core::Interface::vtable(self).remove_ClientCertificateRequested)(
41936                windows_core::Interface::as_raw(self),
41937                token,
41938            )
41939            .ok()
41940        }
41941    }
41942}
41943#[repr(C)]
41944#[doc(hidden)]
41945pub struct ICoreWebView2_5_Vtbl {
41946    pub base__: ICoreWebView2_4_Vtbl,
41947    pub add_ClientCertificateRequested: unsafe extern "system" fn(
41948        *mut core::ffi::c_void,
41949        *mut core::ffi::c_void,
41950        *mut i64,
41951    ) -> windows_core::HRESULT,
41952    pub remove_ClientCertificateRequested:
41953        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
41954}
41955pub trait ICoreWebView2_5_Impl: ICoreWebView2_4_Impl {
41956    fn add_ClientCertificateRequested(
41957        &self,
41958        eventhandler: windows_core::Ref<'_, ICoreWebView2ClientCertificateRequestedEventHandler>,
41959        token: *mut i64,
41960    ) -> windows_core::Result<()>;
41961    fn remove_ClientCertificateRequested(&self, token: i64) -> windows_core::Result<()>;
41962}
41963impl ICoreWebView2_5_Vtbl {
41964    pub const fn new<Identity: ICoreWebView2_5_Impl, const OFFSET: isize>() -> Self {
41965        unsafe extern "system" fn add_ClientCertificateRequested<
41966            Identity: ICoreWebView2_5_Impl,
41967            const OFFSET: isize,
41968        >(
41969            this: *mut core::ffi::c_void,
41970            eventhandler: *mut core::ffi::c_void,
41971            token: *mut i64,
41972        ) -> windows_core::HRESULT {
41973            unsafe {
41974                let this: &Identity =
41975                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41976                ICoreWebView2_5_Impl::add_ClientCertificateRequested(
41977                    this,
41978                    core::mem::transmute_copy(&eventhandler),
41979                    core::mem::transmute_copy(&token),
41980                )
41981                .into()
41982            }
41983        }
41984        unsafe extern "system" fn remove_ClientCertificateRequested<
41985            Identity: ICoreWebView2_5_Impl,
41986            const OFFSET: isize,
41987        >(
41988            this: *mut core::ffi::c_void,
41989            token: i64,
41990        ) -> windows_core::HRESULT {
41991            unsafe {
41992                let this: &Identity =
41993                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
41994                ICoreWebView2_5_Impl::remove_ClientCertificateRequested(
41995                    this,
41996                    core::mem::transmute_copy(&token),
41997                )
41998                .into()
41999            }
42000        }
42001        Self {
42002            base__: ICoreWebView2_4_Vtbl::new::<Identity, OFFSET>(),
42003            add_ClientCertificateRequested: add_ClientCertificateRequested::<Identity, OFFSET>,
42004            remove_ClientCertificateRequested: remove_ClientCertificateRequested::<Identity, OFFSET>,
42005        }
42006    }
42007    pub fn matches(iid: &windows_core::GUID) -> bool {
42008        iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
42009            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
42010            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
42011            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
42012            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
42013    }
42014}
42015impl windows_core::RuntimeName for ICoreWebView2_5 {}
42016windows_core::imp::define_interface!(
42017    ICoreWebView2_6,
42018    ICoreWebView2_6_Vtbl,
42019    0x499aadac_d92c_4589_8a75_111bfc167795
42020);
42021impl core::ops::Deref for ICoreWebView2_6 {
42022    type Target = ICoreWebView2_5;
42023    fn deref(&self) -> &Self::Target {
42024        unsafe { core::mem::transmute(self) }
42025    }
42026}
42027windows_core::imp::interface_hierarchy!(
42028    ICoreWebView2_6,
42029    windows_core::IUnknown,
42030    ICoreWebView2,
42031    ICoreWebView2_2,
42032    ICoreWebView2_3,
42033    ICoreWebView2_4,
42034    ICoreWebView2_5
42035);
42036impl ICoreWebView2_6 {
42037    pub unsafe fn OpenTaskManagerWindow(&self) -> windows_core::Result<()> {
42038        unsafe {
42039            (windows_core::Interface::vtable(self).OpenTaskManagerWindow)(
42040                windows_core::Interface::as_raw(self),
42041            )
42042            .ok()
42043        }
42044    }
42045}
42046#[repr(C)]
42047#[doc(hidden)]
42048pub struct ICoreWebView2_6_Vtbl {
42049    pub base__: ICoreWebView2_5_Vtbl,
42050    pub OpenTaskManagerWindow:
42051        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
42052}
42053pub trait ICoreWebView2_6_Impl: ICoreWebView2_5_Impl {
42054    fn OpenTaskManagerWindow(&self) -> windows_core::Result<()>;
42055}
42056impl ICoreWebView2_6_Vtbl {
42057    pub const fn new<Identity: ICoreWebView2_6_Impl, const OFFSET: isize>() -> Self {
42058        unsafe extern "system" fn OpenTaskManagerWindow<
42059            Identity: ICoreWebView2_6_Impl,
42060            const OFFSET: isize,
42061        >(
42062            this: *mut core::ffi::c_void,
42063        ) -> windows_core::HRESULT {
42064            unsafe {
42065                let this: &Identity =
42066                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42067                ICoreWebView2_6_Impl::OpenTaskManagerWindow(this).into()
42068            }
42069        }
42070        Self {
42071            base__: ICoreWebView2_5_Vtbl::new::<Identity, OFFSET>(),
42072            OpenTaskManagerWindow: OpenTaskManagerWindow::<Identity, OFFSET>,
42073        }
42074    }
42075    pub fn matches(iid: &windows_core::GUID) -> bool {
42076        iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
42077            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
42078            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
42079            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
42080            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
42081            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
42082    }
42083}
42084impl windows_core::RuntimeName for ICoreWebView2_6 {}
42085windows_core::imp::define_interface!(
42086    ICoreWebView2_7,
42087    ICoreWebView2_7_Vtbl,
42088    0x79c24d83_09a3_45ae_9418_487f32a58740
42089);
42090impl core::ops::Deref for ICoreWebView2_7 {
42091    type Target = ICoreWebView2_6;
42092    fn deref(&self) -> &Self::Target {
42093        unsafe { core::mem::transmute(self) }
42094    }
42095}
42096windows_core::imp::interface_hierarchy!(
42097    ICoreWebView2_7,
42098    windows_core::IUnknown,
42099    ICoreWebView2,
42100    ICoreWebView2_2,
42101    ICoreWebView2_3,
42102    ICoreWebView2_4,
42103    ICoreWebView2_5,
42104    ICoreWebView2_6
42105);
42106impl ICoreWebView2_7 {
42107    pub unsafe fn PrintToPdf<P0, P1, P2>(
42108        &self,
42109        resultfilepath: P0,
42110        printsettings: P1,
42111        handler: P2,
42112    ) -> windows_core::Result<()>
42113    where
42114        P0: windows_core::Param<windows_core::PCWSTR>,
42115        P1: windows_core::Param<ICoreWebView2PrintSettings>,
42116        P2: windows_core::Param<ICoreWebView2PrintToPdfCompletedHandler>,
42117    {
42118        unsafe {
42119            (windows_core::Interface::vtable(self).PrintToPdf)(
42120                windows_core::Interface::as_raw(self),
42121                resultfilepath.param().abi(),
42122                printsettings.param().abi(),
42123                handler.param().abi(),
42124            )
42125            .ok()
42126        }
42127    }
42128}
42129#[repr(C)]
42130#[doc(hidden)]
42131pub struct ICoreWebView2_7_Vtbl {
42132    pub base__: ICoreWebView2_6_Vtbl,
42133    pub PrintToPdf: unsafe extern "system" fn(
42134        *mut core::ffi::c_void,
42135        windows_core::PCWSTR,
42136        *mut core::ffi::c_void,
42137        *mut core::ffi::c_void,
42138    ) -> windows_core::HRESULT,
42139}
42140pub trait ICoreWebView2_7_Impl: ICoreWebView2_6_Impl {
42141    fn PrintToPdf(
42142        &self,
42143        resultfilepath: &windows_core::PCWSTR,
42144        printsettings: windows_core::Ref<'_, ICoreWebView2PrintSettings>,
42145        handler: windows_core::Ref<'_, ICoreWebView2PrintToPdfCompletedHandler>,
42146    ) -> windows_core::Result<()>;
42147}
42148impl ICoreWebView2_7_Vtbl {
42149    pub const fn new<Identity: ICoreWebView2_7_Impl, const OFFSET: isize>() -> Self {
42150        unsafe extern "system" fn PrintToPdf<
42151            Identity: ICoreWebView2_7_Impl,
42152            const OFFSET: isize,
42153        >(
42154            this: *mut core::ffi::c_void,
42155            resultfilepath: windows_core::PCWSTR,
42156            printsettings: *mut core::ffi::c_void,
42157            handler: *mut core::ffi::c_void,
42158        ) -> windows_core::HRESULT {
42159            unsafe {
42160                let this: &Identity =
42161                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42162                ICoreWebView2_7_Impl::PrintToPdf(
42163                    this,
42164                    core::mem::transmute(&resultfilepath),
42165                    core::mem::transmute_copy(&printsettings),
42166                    core::mem::transmute_copy(&handler),
42167                )
42168                .into()
42169            }
42170        }
42171        Self {
42172            base__: ICoreWebView2_6_Vtbl::new::<Identity, OFFSET>(),
42173            PrintToPdf: PrintToPdf::<Identity, OFFSET>,
42174        }
42175    }
42176    pub fn matches(iid: &windows_core::GUID) -> bool {
42177        iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
42178            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
42179            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
42180            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
42181            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
42182            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
42183            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
42184    }
42185}
42186impl windows_core::RuntimeName for ICoreWebView2_7 {}
42187windows_core::imp::define_interface!(
42188    ICoreWebView2_8,
42189    ICoreWebView2_8_Vtbl,
42190    0xe9632730_6e1e_43ab_b7b8_7b2c9e62e094
42191);
42192impl core::ops::Deref for ICoreWebView2_8 {
42193    type Target = ICoreWebView2_7;
42194    fn deref(&self) -> &Self::Target {
42195        unsafe { core::mem::transmute(self) }
42196    }
42197}
42198windows_core::imp::interface_hierarchy!(
42199    ICoreWebView2_8,
42200    windows_core::IUnknown,
42201    ICoreWebView2,
42202    ICoreWebView2_2,
42203    ICoreWebView2_3,
42204    ICoreWebView2_4,
42205    ICoreWebView2_5,
42206    ICoreWebView2_6,
42207    ICoreWebView2_7
42208);
42209impl ICoreWebView2_8 {
42210    pub unsafe fn add_IsMutedChanged<P0>(
42211        &self,
42212        eventhandler: P0,
42213        token: *mut i64,
42214    ) -> windows_core::Result<()>
42215    where
42216        P0: windows_core::Param<ICoreWebView2IsMutedChangedEventHandler>,
42217    {
42218        unsafe {
42219            (windows_core::Interface::vtable(self).add_IsMutedChanged)(
42220                windows_core::Interface::as_raw(self),
42221                eventhandler.param().abi(),
42222                token as _,
42223            )
42224            .ok()
42225        }
42226    }
42227    pub unsafe fn remove_IsMutedChanged(&self, token: i64) -> windows_core::Result<()> {
42228        unsafe {
42229            (windows_core::Interface::vtable(self).remove_IsMutedChanged)(
42230                windows_core::Interface::as_raw(self),
42231                token,
42232            )
42233            .ok()
42234        }
42235    }
42236    pub unsafe fn IsMuted(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()> {
42237        unsafe {
42238            (windows_core::Interface::vtable(self).IsMuted)(
42239                windows_core::Interface::as_raw(self),
42240                value as _,
42241            )
42242            .ok()
42243        }
42244    }
42245    pub unsafe fn SetIsMuted(&self, value: bool) -> windows_core::Result<()> {
42246        unsafe {
42247            (windows_core::Interface::vtable(self).SetIsMuted)(
42248                windows_core::Interface::as_raw(self),
42249                value.into(),
42250            )
42251            .ok()
42252        }
42253    }
42254    pub unsafe fn add_IsDocumentPlayingAudioChanged<P0>(
42255        &self,
42256        eventhandler: P0,
42257        token: *mut i64,
42258    ) -> windows_core::Result<()>
42259    where
42260        P0: windows_core::Param<ICoreWebView2IsDocumentPlayingAudioChangedEventHandler>,
42261    {
42262        unsafe {
42263            (windows_core::Interface::vtable(self).add_IsDocumentPlayingAudioChanged)(
42264                windows_core::Interface::as_raw(self),
42265                eventhandler.param().abi(),
42266                token as _,
42267            )
42268            .ok()
42269        }
42270    }
42271    pub unsafe fn remove_IsDocumentPlayingAudioChanged(
42272        &self,
42273        token: i64,
42274    ) -> windows_core::Result<()> {
42275        unsafe {
42276            (windows_core::Interface::vtable(self).remove_IsDocumentPlayingAudioChanged)(
42277                windows_core::Interface::as_raw(self),
42278                token,
42279            )
42280            .ok()
42281        }
42282    }
42283    pub unsafe fn IsDocumentPlayingAudio(
42284        &self,
42285        value: *mut windows_core::BOOL,
42286    ) -> windows_core::Result<()> {
42287        unsafe {
42288            (windows_core::Interface::vtable(self).IsDocumentPlayingAudio)(
42289                windows_core::Interface::as_raw(self),
42290                value as _,
42291            )
42292            .ok()
42293        }
42294    }
42295}
42296#[repr(C)]
42297#[doc(hidden)]
42298pub struct ICoreWebView2_8_Vtbl {
42299    pub base__: ICoreWebView2_7_Vtbl,
42300    pub add_IsMutedChanged: unsafe extern "system" fn(
42301        *mut core::ffi::c_void,
42302        *mut core::ffi::c_void,
42303        *mut i64,
42304    ) -> windows_core::HRESULT,
42305    pub remove_IsMutedChanged:
42306        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
42307    pub IsMuted: unsafe extern "system" fn(
42308        *mut core::ffi::c_void,
42309        *mut windows_core::BOOL,
42310    ) -> windows_core::HRESULT,
42311    pub SetIsMuted: unsafe extern "system" fn(
42312        *mut core::ffi::c_void,
42313        windows_core::BOOL,
42314    ) -> windows_core::HRESULT,
42315    pub add_IsDocumentPlayingAudioChanged: unsafe extern "system" fn(
42316        *mut core::ffi::c_void,
42317        *mut core::ffi::c_void,
42318        *mut i64,
42319    ) -> windows_core::HRESULT,
42320    pub remove_IsDocumentPlayingAudioChanged:
42321        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
42322    pub IsDocumentPlayingAudio: unsafe extern "system" fn(
42323        *mut core::ffi::c_void,
42324        *mut windows_core::BOOL,
42325    ) -> windows_core::HRESULT,
42326}
42327pub trait ICoreWebView2_8_Impl: ICoreWebView2_7_Impl {
42328    fn add_IsMutedChanged(
42329        &self,
42330        eventhandler: windows_core::Ref<'_, ICoreWebView2IsMutedChangedEventHandler>,
42331        token: *mut i64,
42332    ) -> windows_core::Result<()>;
42333    fn remove_IsMutedChanged(&self, token: i64) -> windows_core::Result<()>;
42334    fn IsMuted(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
42335    fn SetIsMuted(&self, value: windows_core::BOOL) -> windows_core::Result<()>;
42336    fn add_IsDocumentPlayingAudioChanged(
42337        &self,
42338        eventhandler: windows_core::Ref<'_, ICoreWebView2IsDocumentPlayingAudioChangedEventHandler>,
42339        token: *mut i64,
42340    ) -> windows_core::Result<()>;
42341    fn remove_IsDocumentPlayingAudioChanged(&self, token: i64) -> windows_core::Result<()>;
42342    fn IsDocumentPlayingAudio(&self, value: *mut windows_core::BOOL) -> windows_core::Result<()>;
42343}
42344impl ICoreWebView2_8_Vtbl {
42345    pub const fn new<Identity: ICoreWebView2_8_Impl, const OFFSET: isize>() -> Self {
42346        unsafe extern "system" fn add_IsMutedChanged<
42347            Identity: ICoreWebView2_8_Impl,
42348            const OFFSET: isize,
42349        >(
42350            this: *mut core::ffi::c_void,
42351            eventhandler: *mut core::ffi::c_void,
42352            token: *mut i64,
42353        ) -> windows_core::HRESULT {
42354            unsafe {
42355                let this: &Identity =
42356                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42357                ICoreWebView2_8_Impl::add_IsMutedChanged(
42358                    this,
42359                    core::mem::transmute_copy(&eventhandler),
42360                    core::mem::transmute_copy(&token),
42361                )
42362                .into()
42363            }
42364        }
42365        unsafe extern "system" fn remove_IsMutedChanged<
42366            Identity: ICoreWebView2_8_Impl,
42367            const OFFSET: isize,
42368        >(
42369            this: *mut core::ffi::c_void,
42370            token: i64,
42371        ) -> windows_core::HRESULT {
42372            unsafe {
42373                let this: &Identity =
42374                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42375                ICoreWebView2_8_Impl::remove_IsMutedChanged(this, core::mem::transmute_copy(&token))
42376                    .into()
42377            }
42378        }
42379        unsafe extern "system" fn IsMuted<Identity: ICoreWebView2_8_Impl, const OFFSET: isize>(
42380            this: *mut core::ffi::c_void,
42381            value: *mut windows_core::BOOL,
42382        ) -> windows_core::HRESULT {
42383            unsafe {
42384                let this: &Identity =
42385                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42386                ICoreWebView2_8_Impl::IsMuted(this, core::mem::transmute_copy(&value)).into()
42387            }
42388        }
42389        unsafe extern "system" fn SetIsMuted<
42390            Identity: ICoreWebView2_8_Impl,
42391            const OFFSET: isize,
42392        >(
42393            this: *mut core::ffi::c_void,
42394            value: windows_core::BOOL,
42395        ) -> windows_core::HRESULT {
42396            unsafe {
42397                let this: &Identity =
42398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42399                ICoreWebView2_8_Impl::SetIsMuted(this, core::mem::transmute_copy(&value)).into()
42400            }
42401        }
42402        unsafe extern "system" fn add_IsDocumentPlayingAudioChanged<
42403            Identity: ICoreWebView2_8_Impl,
42404            const OFFSET: isize,
42405        >(
42406            this: *mut core::ffi::c_void,
42407            eventhandler: *mut core::ffi::c_void,
42408            token: *mut i64,
42409        ) -> windows_core::HRESULT {
42410            unsafe {
42411                let this: &Identity =
42412                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42413                ICoreWebView2_8_Impl::add_IsDocumentPlayingAudioChanged(
42414                    this,
42415                    core::mem::transmute_copy(&eventhandler),
42416                    core::mem::transmute_copy(&token),
42417                )
42418                .into()
42419            }
42420        }
42421        unsafe extern "system" fn remove_IsDocumentPlayingAudioChanged<
42422            Identity: ICoreWebView2_8_Impl,
42423            const OFFSET: isize,
42424        >(
42425            this: *mut core::ffi::c_void,
42426            token: i64,
42427        ) -> windows_core::HRESULT {
42428            unsafe {
42429                let this: &Identity =
42430                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42431                ICoreWebView2_8_Impl::remove_IsDocumentPlayingAudioChanged(
42432                    this,
42433                    core::mem::transmute_copy(&token),
42434                )
42435                .into()
42436            }
42437        }
42438        unsafe extern "system" fn IsDocumentPlayingAudio<
42439            Identity: ICoreWebView2_8_Impl,
42440            const OFFSET: isize,
42441        >(
42442            this: *mut core::ffi::c_void,
42443            value: *mut windows_core::BOOL,
42444        ) -> windows_core::HRESULT {
42445            unsafe {
42446                let this: &Identity =
42447                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42448                ICoreWebView2_8_Impl::IsDocumentPlayingAudio(
42449                    this,
42450                    core::mem::transmute_copy(&value),
42451                )
42452                .into()
42453            }
42454        }
42455        Self {
42456            base__: ICoreWebView2_7_Vtbl::new::<Identity, OFFSET>(),
42457            add_IsMutedChanged: add_IsMutedChanged::<Identity, OFFSET>,
42458            remove_IsMutedChanged: remove_IsMutedChanged::<Identity, OFFSET>,
42459            IsMuted: IsMuted::<Identity, OFFSET>,
42460            SetIsMuted: SetIsMuted::<Identity, OFFSET>,
42461            add_IsDocumentPlayingAudioChanged: add_IsDocumentPlayingAudioChanged::<Identity, OFFSET>,
42462            remove_IsDocumentPlayingAudioChanged: remove_IsDocumentPlayingAudioChanged::<
42463                Identity,
42464                OFFSET,
42465            >,
42466            IsDocumentPlayingAudio: IsDocumentPlayingAudio::<Identity, OFFSET>,
42467        }
42468    }
42469    pub fn matches(iid: &windows_core::GUID) -> bool {
42470        iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
42471            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
42472            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
42473            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
42474            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
42475            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
42476            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
42477            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
42478    }
42479}
42480impl windows_core::RuntimeName for ICoreWebView2_8 {}
42481windows_core::imp::define_interface!(
42482    ICoreWebView2_9,
42483    ICoreWebView2_9_Vtbl,
42484    0x4d7b2eab_9fdc_468d_b998_a9260b5ed651
42485);
42486impl core::ops::Deref for ICoreWebView2_9 {
42487    type Target = ICoreWebView2_8;
42488    fn deref(&self) -> &Self::Target {
42489        unsafe { core::mem::transmute(self) }
42490    }
42491}
42492windows_core::imp::interface_hierarchy!(
42493    ICoreWebView2_9,
42494    windows_core::IUnknown,
42495    ICoreWebView2,
42496    ICoreWebView2_2,
42497    ICoreWebView2_3,
42498    ICoreWebView2_4,
42499    ICoreWebView2_5,
42500    ICoreWebView2_6,
42501    ICoreWebView2_7,
42502    ICoreWebView2_8
42503);
42504impl ICoreWebView2_9 {
42505    pub unsafe fn add_IsDefaultDownloadDialogOpenChanged<P0>(
42506        &self,
42507        handler: P0,
42508        token: *mut i64,
42509    ) -> windows_core::Result<()>
42510    where
42511        P0: windows_core::Param<ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler>,
42512    {
42513        unsafe {
42514            (windows_core::Interface::vtable(self).add_IsDefaultDownloadDialogOpenChanged)(
42515                windows_core::Interface::as_raw(self),
42516                handler.param().abi(),
42517                token as _,
42518            )
42519            .ok()
42520        }
42521    }
42522    pub unsafe fn remove_IsDefaultDownloadDialogOpenChanged(
42523        &self,
42524        token: i64,
42525    ) -> windows_core::Result<()> {
42526        unsafe {
42527            (windows_core::Interface::vtable(self).remove_IsDefaultDownloadDialogOpenChanged)(
42528                windows_core::Interface::as_raw(self),
42529                token,
42530            )
42531            .ok()
42532        }
42533    }
42534    pub unsafe fn IsDefaultDownloadDialogOpen(
42535        &self,
42536        value: *mut windows_core::BOOL,
42537    ) -> windows_core::Result<()> {
42538        unsafe {
42539            (windows_core::Interface::vtable(self).IsDefaultDownloadDialogOpen)(
42540                windows_core::Interface::as_raw(self),
42541                value as _,
42542            )
42543            .ok()
42544        }
42545    }
42546    pub unsafe fn OpenDefaultDownloadDialog(&self) -> windows_core::Result<()> {
42547        unsafe {
42548            (windows_core::Interface::vtable(self).OpenDefaultDownloadDialog)(
42549                windows_core::Interface::as_raw(self),
42550            )
42551            .ok()
42552        }
42553    }
42554    pub unsafe fn CloseDefaultDownloadDialog(&self) -> windows_core::Result<()> {
42555        unsafe {
42556            (windows_core::Interface::vtable(self).CloseDefaultDownloadDialog)(
42557                windows_core::Interface::as_raw(self),
42558            )
42559            .ok()
42560        }
42561    }
42562    pub unsafe fn DefaultDownloadDialogCornerAlignment(
42563        &self,
42564        value: *mut COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42565    ) -> windows_core::Result<()> {
42566        unsafe {
42567            (windows_core::Interface::vtable(self).DefaultDownloadDialogCornerAlignment)(
42568                windows_core::Interface::as_raw(self),
42569                value as _,
42570            )
42571            .ok()
42572        }
42573    }
42574    pub unsafe fn SetDefaultDownloadDialogCornerAlignment(
42575        &self,
42576        value: COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42577    ) -> windows_core::Result<()> {
42578        unsafe {
42579            (windows_core::Interface::vtable(self).SetDefaultDownloadDialogCornerAlignment)(
42580                windows_core::Interface::as_raw(self),
42581                value,
42582            )
42583            .ok()
42584        }
42585    }
42586    pub unsafe fn DefaultDownloadDialogMargin(
42587        &self,
42588        value: *mut windows::Win32::Foundation::POINT,
42589    ) -> windows_core::Result<()> {
42590        unsafe {
42591            (windows_core::Interface::vtable(self).DefaultDownloadDialogMargin)(
42592                windows_core::Interface::as_raw(self),
42593                value as _,
42594            )
42595            .ok()
42596        }
42597    }
42598    pub unsafe fn SetDefaultDownloadDialogMargin(
42599        &self,
42600        value: windows::Win32::Foundation::POINT,
42601    ) -> windows_core::Result<()> {
42602        unsafe {
42603            (windows_core::Interface::vtable(self).SetDefaultDownloadDialogMargin)(
42604                windows_core::Interface::as_raw(self),
42605                core::mem::transmute(value),
42606            )
42607            .ok()
42608        }
42609    }
42610}
42611#[repr(C)]
42612#[doc(hidden)]
42613pub struct ICoreWebView2_9_Vtbl {
42614    pub base__: ICoreWebView2_8_Vtbl,
42615    pub add_IsDefaultDownloadDialogOpenChanged: unsafe extern "system" fn(
42616        *mut core::ffi::c_void,
42617        *mut core::ffi::c_void,
42618        *mut i64,
42619    )
42620        -> windows_core::HRESULT,
42621    pub remove_IsDefaultDownloadDialogOpenChanged:
42622        unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
42623    pub IsDefaultDownloadDialogOpen: unsafe extern "system" fn(
42624        *mut core::ffi::c_void,
42625        *mut windows_core::BOOL,
42626    ) -> windows_core::HRESULT,
42627    pub OpenDefaultDownloadDialog:
42628        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
42629    pub CloseDefaultDownloadDialog:
42630        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
42631    pub DefaultDownloadDialogCornerAlignment: unsafe extern "system" fn(
42632        *mut core::ffi::c_void,
42633        *mut COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42634    )
42635        -> windows_core::HRESULT,
42636    pub SetDefaultDownloadDialogCornerAlignment: unsafe extern "system" fn(
42637        *mut core::ffi::c_void,
42638        COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42639    )
42640        -> windows_core::HRESULT,
42641    pub DefaultDownloadDialogMargin: unsafe extern "system" fn(
42642        *mut core::ffi::c_void,
42643        *mut windows::Win32::Foundation::POINT,
42644    ) -> windows_core::HRESULT,
42645    pub SetDefaultDownloadDialogMargin: unsafe extern "system" fn(
42646        *mut core::ffi::c_void,
42647        windows::Win32::Foundation::POINT,
42648    ) -> windows_core::HRESULT,
42649}
42650pub trait ICoreWebView2_9_Impl: ICoreWebView2_8_Impl {
42651    fn add_IsDefaultDownloadDialogOpenChanged(
42652        &self,
42653        handler: windows_core::Ref<'_, ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler>,
42654        token: *mut i64,
42655    ) -> windows_core::Result<()>;
42656    fn remove_IsDefaultDownloadDialogOpenChanged(&self, token: i64) -> windows_core::Result<()>;
42657    fn IsDefaultDownloadDialogOpen(
42658        &self,
42659        value: *mut windows_core::BOOL,
42660    ) -> windows_core::Result<()>;
42661    fn OpenDefaultDownloadDialog(&self) -> windows_core::Result<()>;
42662    fn CloseDefaultDownloadDialog(&self) -> windows_core::Result<()>;
42663    fn DefaultDownloadDialogCornerAlignment(
42664        &self,
42665        value: *mut COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42666    ) -> windows_core::Result<()>;
42667    fn SetDefaultDownloadDialogCornerAlignment(
42668        &self,
42669        value: COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42670    ) -> windows_core::Result<()>;
42671    fn DefaultDownloadDialogMargin(
42672        &self,
42673        value: *mut windows::Win32::Foundation::POINT,
42674    ) -> windows_core::Result<()>;
42675    fn SetDefaultDownloadDialogMargin(
42676        &self,
42677        value: &windows::Win32::Foundation::POINT,
42678    ) -> windows_core::Result<()>;
42679}
42680impl ICoreWebView2_9_Vtbl {
42681    pub const fn new<Identity: ICoreWebView2_9_Impl, const OFFSET: isize>() -> Self {
42682        unsafe extern "system" fn add_IsDefaultDownloadDialogOpenChanged<
42683            Identity: ICoreWebView2_9_Impl,
42684            const OFFSET: isize,
42685        >(
42686            this: *mut core::ffi::c_void,
42687            handler: *mut core::ffi::c_void,
42688            token: *mut i64,
42689        ) -> windows_core::HRESULT {
42690            unsafe {
42691                let this: &Identity =
42692                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42693                ICoreWebView2_9_Impl::add_IsDefaultDownloadDialogOpenChanged(
42694                    this,
42695                    core::mem::transmute_copy(&handler),
42696                    core::mem::transmute_copy(&token),
42697                )
42698                .into()
42699            }
42700        }
42701        unsafe extern "system" fn remove_IsDefaultDownloadDialogOpenChanged<
42702            Identity: ICoreWebView2_9_Impl,
42703            const OFFSET: isize,
42704        >(
42705            this: *mut core::ffi::c_void,
42706            token: i64,
42707        ) -> windows_core::HRESULT {
42708            unsafe {
42709                let this: &Identity =
42710                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42711                ICoreWebView2_9_Impl::remove_IsDefaultDownloadDialogOpenChanged(
42712                    this,
42713                    core::mem::transmute_copy(&token),
42714                )
42715                .into()
42716            }
42717        }
42718        unsafe extern "system" fn IsDefaultDownloadDialogOpen<
42719            Identity: ICoreWebView2_9_Impl,
42720            const OFFSET: isize,
42721        >(
42722            this: *mut core::ffi::c_void,
42723            value: *mut windows_core::BOOL,
42724        ) -> windows_core::HRESULT {
42725            unsafe {
42726                let this: &Identity =
42727                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42728                ICoreWebView2_9_Impl::IsDefaultDownloadDialogOpen(
42729                    this,
42730                    core::mem::transmute_copy(&value),
42731                )
42732                .into()
42733            }
42734        }
42735        unsafe extern "system" fn OpenDefaultDownloadDialog<
42736            Identity: ICoreWebView2_9_Impl,
42737            const OFFSET: isize,
42738        >(
42739            this: *mut core::ffi::c_void,
42740        ) -> windows_core::HRESULT {
42741            unsafe {
42742                let this: &Identity =
42743                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42744                ICoreWebView2_9_Impl::OpenDefaultDownloadDialog(this).into()
42745            }
42746        }
42747        unsafe extern "system" fn CloseDefaultDownloadDialog<
42748            Identity: ICoreWebView2_9_Impl,
42749            const OFFSET: isize,
42750        >(
42751            this: *mut core::ffi::c_void,
42752        ) -> windows_core::HRESULT {
42753            unsafe {
42754                let this: &Identity =
42755                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42756                ICoreWebView2_9_Impl::CloseDefaultDownloadDialog(this).into()
42757            }
42758        }
42759        unsafe extern "system" fn DefaultDownloadDialogCornerAlignment<
42760            Identity: ICoreWebView2_9_Impl,
42761            const OFFSET: isize,
42762        >(
42763            this: *mut core::ffi::c_void,
42764            value: *mut COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42765        ) -> windows_core::HRESULT {
42766            unsafe {
42767                let this: &Identity =
42768                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42769                ICoreWebView2_9_Impl::DefaultDownloadDialogCornerAlignment(
42770                    this,
42771                    core::mem::transmute_copy(&value),
42772                )
42773                .into()
42774            }
42775        }
42776        unsafe extern "system" fn SetDefaultDownloadDialogCornerAlignment<
42777            Identity: ICoreWebView2_9_Impl,
42778            const OFFSET: isize,
42779        >(
42780            this: *mut core::ffi::c_void,
42781            value: COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT,
42782        ) -> windows_core::HRESULT {
42783            unsafe {
42784                let this: &Identity =
42785                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42786                ICoreWebView2_9_Impl::SetDefaultDownloadDialogCornerAlignment(
42787                    this,
42788                    core::mem::transmute_copy(&value),
42789                )
42790                .into()
42791            }
42792        }
42793        unsafe extern "system" fn DefaultDownloadDialogMargin<
42794            Identity: ICoreWebView2_9_Impl,
42795            const OFFSET: isize,
42796        >(
42797            this: *mut core::ffi::c_void,
42798            value: *mut windows::Win32::Foundation::POINT,
42799        ) -> windows_core::HRESULT {
42800            unsafe {
42801                let this: &Identity =
42802                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42803                ICoreWebView2_9_Impl::DefaultDownloadDialogMargin(
42804                    this,
42805                    core::mem::transmute_copy(&value),
42806                )
42807                .into()
42808            }
42809        }
42810        unsafe extern "system" fn SetDefaultDownloadDialogMargin<
42811            Identity: ICoreWebView2_9_Impl,
42812            const OFFSET: isize,
42813        >(
42814            this: *mut core::ffi::c_void,
42815            value: windows::Win32::Foundation::POINT,
42816        ) -> windows_core::HRESULT {
42817            unsafe {
42818                let this: &Identity =
42819                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
42820                ICoreWebView2_9_Impl::SetDefaultDownloadDialogMargin(
42821                    this,
42822                    core::mem::transmute(&value),
42823                )
42824                .into()
42825            }
42826        }
42827        Self {
42828            base__: ICoreWebView2_8_Vtbl::new::<Identity, OFFSET>(),
42829            add_IsDefaultDownloadDialogOpenChanged: add_IsDefaultDownloadDialogOpenChanged::<
42830                Identity,
42831                OFFSET,
42832            >,
42833            remove_IsDefaultDownloadDialogOpenChanged: remove_IsDefaultDownloadDialogOpenChanged::<
42834                Identity,
42835                OFFSET,
42836            >,
42837            IsDefaultDownloadDialogOpen: IsDefaultDownloadDialogOpen::<Identity, OFFSET>,
42838            OpenDefaultDownloadDialog: OpenDefaultDownloadDialog::<Identity, OFFSET>,
42839            CloseDefaultDownloadDialog: CloseDefaultDownloadDialog::<Identity, OFFSET>,
42840            DefaultDownloadDialogCornerAlignment: DefaultDownloadDialogCornerAlignment::<
42841                Identity,
42842                OFFSET,
42843            >,
42844            SetDefaultDownloadDialogCornerAlignment: SetDefaultDownloadDialogCornerAlignment::<
42845                Identity,
42846                OFFSET,
42847            >,
42848            DefaultDownloadDialogMargin: DefaultDownloadDialogMargin::<Identity, OFFSET>,
42849            SetDefaultDownloadDialogMargin: SetDefaultDownloadDialogMargin::<Identity, OFFSET>,
42850        }
42851    }
42852    pub fn matches(iid: &windows_core::GUID) -> bool {
42853        iid == &<ICoreWebView2_9 as windows_core::Interface>::IID
42854            || iid == &<ICoreWebView2 as windows_core::Interface>::IID
42855            || iid == &<ICoreWebView2_2 as windows_core::Interface>::IID
42856            || iid == &<ICoreWebView2_3 as windows_core::Interface>::IID
42857            || iid == &<ICoreWebView2_4 as windows_core::Interface>::IID
42858            || iid == &<ICoreWebView2_5 as windows_core::Interface>::IID
42859            || iid == &<ICoreWebView2_6 as windows_core::Interface>::IID
42860            || iid == &<ICoreWebView2_7 as windows_core::Interface>::IID
42861            || iid == &<ICoreWebView2_8 as windows_core::Interface>::IID
42862    }
42863}
42864impl windows_core::RuntimeName for ICoreWebView2_9 {}