├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── Taskfile.yml ├── go.mod ├── go.sum ├── internal └── w32 │ └── w32.go ├── pkg ├── combridge │ ├── bridge.go │ ├── iunknown.go │ ├── iunknown_impl.go │ ├── syscall.go │ └── vtables.go ├── edge │ ├── COREWEBVIEW2_BOUNDS_MODE.go │ ├── COREWEBVIEW2_COLOR.go │ ├── COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND.go │ ├── COREWEBVIEW2_KEY_EVENT_KIND.go │ ├── COREWEBVIEW2_MOVE_FOCUS_REASON.go │ ├── COREWEBVIEW2_PHYSICAL_KEY_STATUS.go │ ├── COREWEBVIEW2_PROCESS_FAILED_KIND.go │ ├── COREWEBVIEW2_WEB_RESOURCE_CONTEXT.go │ ├── ICoreWebView2AcceleratorKeyPressedEventArgs.go │ ├── ICoreWebView2AcceleratorKeyPressedEventHandler.go │ ├── ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler.go │ ├── ICoreWebView2ContainsFullScreenElementChangedEventArgs.go │ ├── ICoreWebView2ContainsFullScreenElementChangedEventHandler.go │ ├── ICoreWebView2Controller.go │ ├── ICoreWebView2Controller2.go │ ├── ICoreWebView2Controller3.go │ ├── ICoreWebView2Controller4.go │ ├── ICoreWebView2Cookie.go │ ├── ICoreWebView2CookieList.go │ ├── ICoreWebView2CookieManager.go │ ├── ICoreWebView2CreateCoreWebView2ControllerCompletedHandler.go │ ├── ICoreWebView2Deferral.go │ ├── ICoreWebView2ExecuteScriptCompletedHandler.go │ ├── ICoreWebView2File.go │ ├── ICoreWebView2HttpHeadersCollectionIterator.go │ ├── ICoreWebView2HttpRequestHeaders.go │ ├── ICoreWebView2HttpResponseHeaders.go │ ├── ICoreWebView2NavigationCompletedEventArgs.go │ ├── ICoreWebView2NavigationCompletedEventHandler.go │ ├── ICoreWebView2ObjectCollectionView.go │ ├── ICoreWebView2ProcessFailedEventArgs.go │ ├── ICoreWebView2ProcessFailedEventHandler.go │ ├── ICoreWebView2RasterizationScaleChangedEventHandler.go │ ├── ICoreWebView2Settings.go │ ├── ICoreWebView2Settings2.go │ ├── ICoreWebView2Settings3.go │ ├── ICoreWebView2Settings4.go │ ├── ICoreWebView2Settings5.go │ ├── ICoreWebView2Settings6.go │ ├── ICoreWebView2WebMessageReceivedEventArgs.go │ ├── ICoreWebView2WebMessageReceivedEventHandler.go │ ├── ICoreWebView2WebResourceRequest.go │ ├── ICoreWebView2WebResourceRequestedEventArgs.go │ ├── ICoreWebView2WebResourceRequestedEventHandler.go │ ├── ICoreWebView2WebResourceResponse.go │ ├── ICoreWebView2_2.go │ ├── ICoreWebView2_3.go │ ├── ICoreWebViewSettings.go │ ├── IStream.go │ ├── capabilities.go │ ├── capabilities_test.go │ ├── chromium.go │ ├── chromium_386.go │ ├── chromium_amd64.go │ ├── chromium_arm64.go │ ├── com.go │ ├── cookies_test.go │ ├── corewebview2.go │ ├── create_env_go.go │ ├── create_env_native.go │ ├── guid.go │ └── version_map.go └── webview2 │ ├── COREWEBVIEW2_BOUNDS_MODE.go │ ├── COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND.go │ ├── COREWEBVIEW2_BROWSING_DATA_KINDS.go │ ├── COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT.go │ ├── COREWEBVIEW2_CHANNEL_SEARCH_KIND.go │ ├── COREWEBVIEW2_CLIENT_CERTIFICATE_KIND.go │ ├── COREWEBVIEW2_COLOR.go │ ├── COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND.go │ ├── COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND.go │ ├── COREWEBVIEW2_COOKIE_SAME_SITE_KIND.go │ ├── COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT.go │ ├── COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON.go │ ├── COREWEBVIEW2_DOWNLOAD_STATE.go │ ├── COREWEBVIEW2_FAVICON_IMAGE_FORMAT.go │ ├── COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND.go │ ├── COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION.go │ ├── COREWEBVIEW2_FRAME_KIND.go │ ├── COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND.go │ ├── COREWEBVIEW2_KEY_EVENT_KIND.go │ ├── COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL.go │ ├── COREWEBVIEW2_MOUSE_EVENT_KIND.go │ ├── COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go │ ├── COREWEBVIEW2_MOVE_FOCUS_REASON.go │ ├── COREWEBVIEW2_NAVIGATION_KIND.go │ ├── COREWEBVIEW2_NON_CLIENT_REGION_KIND.go │ ├── COREWEBVIEW2_PDF_TOOLBAR_ITEMS.go │ ├── COREWEBVIEW2_PERMISSION_KIND.go │ ├── COREWEBVIEW2_PERMISSION_STATE.go │ ├── COREWEBVIEW2_PHYSICAL_KEY_STATUS.go │ ├── COREWEBVIEW2_POINTER_EVENT_KIND.go │ ├── COREWEBVIEW2_PREFERRED_COLOR_SCHEME.go │ ├── COREWEBVIEW2_PRINT_COLLATION.go │ ├── COREWEBVIEW2_PRINT_COLOR_MODE.go │ ├── COREWEBVIEW2_PRINT_DIALOG_KIND.go │ ├── COREWEBVIEW2_PRINT_DUPLEX.go │ ├── COREWEBVIEW2_PRINT_MEDIA_SIZE.go │ ├── COREWEBVIEW2_PRINT_ORIENTATION.go │ ├── COREWEBVIEW2_PRINT_STATUS.go │ ├── COREWEBVIEW2_PROCESS_FAILED_KIND.go │ ├── COREWEBVIEW2_PROCESS_FAILED_REASON.go │ ├── COREWEBVIEW2_PROCESS_KIND.go │ ├── COREWEBVIEW2_RELEASE_CHANNELS.go │ ├── COREWEBVIEW2_SAVE_AS_KIND.go │ ├── COREWEBVIEW2_SAVE_AS_UI_RESULT.go │ ├── COREWEBVIEW2_SCRIPT_DIALOG_KIND.go │ ├── COREWEBVIEW2_SCROLLBAR_STYLE.go │ ├── COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION.go │ ├── COREWEBVIEW2_SHARED_BUFFER_ACCESS.go │ ├── COREWEBVIEW2_TEXT_DIRECTION_KIND.go │ ├── COREWEBVIEW2_TRACKING_PREVENTION_LEVEL.go │ ├── COREWEBVIEW2_WEB_ERROR_STATUS.go │ ├── COREWEBVIEW2_WEB_RESOURCE_CONTEXT.go │ ├── COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS.go │ ├── ICoreWebView2.go │ ├── ICoreWebView2AcceleratorKeyPressedEventArgs.go │ ├── ICoreWebView2AcceleratorKeyPressedEventArgs2.go │ ├── ICoreWebView2AcceleratorKeyPressedEventHandler.go │ ├── ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler.go │ ├── ICoreWebView2BasicAuthenticationRequestedEventArgs.go │ ├── ICoreWebView2BasicAuthenticationRequestedEventHandler.go │ ├── ICoreWebView2BasicAuthenticationResponse.go │ ├── ICoreWebView2BrowserExtension.go │ ├── ICoreWebView2BrowserExtensionEnableCompletedHandler.go │ ├── ICoreWebView2BrowserExtensionList.go │ ├── ICoreWebView2BrowserExtensionRemoveCompletedHandler.go │ ├── ICoreWebView2BrowserProcessExitedEventArgs.go │ ├── ICoreWebView2BrowserProcessExitedEventHandler.go │ ├── ICoreWebView2BytesReceivedChangedEventHandler.go │ ├── ICoreWebView2CallDevToolsProtocolMethodCompletedHandler.go │ ├── ICoreWebView2CapturePreviewCompletedHandler.go │ ├── ICoreWebView2Certificate.go │ ├── ICoreWebView2ClearBrowsingDataCompletedHandler.go │ ├── ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler.go │ ├── ICoreWebView2ClientCertificate.go │ ├── ICoreWebView2ClientCertificateCollection.go │ ├── ICoreWebView2ClientCertificateRequestedEventArgs.go │ ├── ICoreWebView2ClientCertificateRequestedEventHandler.go │ ├── ICoreWebView2CompositionController.go │ ├── ICoreWebView2CompositionController2.go │ ├── ICoreWebView2CompositionController3.go │ ├── ICoreWebView2CompositionController4.go │ ├── ICoreWebView2ContainsFullScreenElementChangedEventHandler.go │ ├── ICoreWebView2ContentLoadingEventArgs.go │ ├── ICoreWebView2ContentLoadingEventHandler.go │ ├── ICoreWebView2ContextMenuItem.go │ ├── ICoreWebView2ContextMenuItemCollection.go │ ├── ICoreWebView2ContextMenuRequestedEventArgs.go │ ├── ICoreWebView2ContextMenuRequestedEventHandler.go │ ├── ICoreWebView2ContextMenuTarget.go │ ├── ICoreWebView2Controller.go │ ├── ICoreWebView2Controller2.go │ ├── ICoreWebView2Controller3.go │ ├── ICoreWebView2Controller4.go │ ├── ICoreWebView2ControllerOptions.go │ ├── ICoreWebView2ControllerOptions2.go │ ├── ICoreWebView2Cookie.go │ ├── ICoreWebView2CookieList.go │ ├── ICoreWebView2CookieManager.go │ ├── ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler.go │ ├── ICoreWebView2CreateCoreWebView2ControllerCompletedHandler.go │ ├── ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler.go │ ├── ICoreWebView2CursorChangedEventHandler.go │ ├── ICoreWebView2CustomItemSelectedEventHandler.go │ ├── ICoreWebView2CustomSchemeRegistration.go │ ├── ICoreWebView2DOMContentLoadedEventArgs.go │ ├── ICoreWebView2DOMContentLoadedEventHandler.go │ ├── ICoreWebView2Deferral.go │ ├── ICoreWebView2DevToolsProtocolEventReceivedEventArgs.go │ ├── ICoreWebView2DevToolsProtocolEventReceivedEventArgs2.go │ ├── ICoreWebView2DevToolsProtocolEventReceivedEventHandler.go │ ├── ICoreWebView2DevToolsProtocolEventReceiver.go │ ├── ICoreWebView2DocumentTitleChangedEventHandler.go │ ├── ICoreWebView2DownloadOperation.go │ ├── ICoreWebView2DownloadStartingEventArgs.go │ ├── ICoreWebView2DownloadStartingEventHandler.go │ ├── ICoreWebView2Environment.go │ ├── ICoreWebView2Environment10.go │ ├── ICoreWebView2Environment11.go │ ├── ICoreWebView2Environment12.go │ ├── ICoreWebView2Environment13.go │ ├── ICoreWebView2Environment14.go │ ├── ICoreWebView2Environment2.go │ ├── ICoreWebView2Environment3.go │ ├── ICoreWebView2Environment4.go │ ├── ICoreWebView2Environment5.go │ ├── ICoreWebView2Environment6.go │ ├── ICoreWebView2Environment7.go │ ├── ICoreWebView2Environment8.go │ ├── ICoreWebView2Environment9.go │ ├── ICoreWebView2EnvironmentOptions.go │ ├── ICoreWebView2EnvironmentOptions2.go │ ├── ICoreWebView2EnvironmentOptions3.go │ ├── ICoreWebView2EnvironmentOptions4.go │ ├── ICoreWebView2EnvironmentOptions5.go │ ├── ICoreWebView2EnvironmentOptions6.go │ ├── ICoreWebView2EnvironmentOptions7.go │ ├── ICoreWebView2EnvironmentOptions8.go │ ├── ICoreWebView2EstimatedEndTimeChangedEventHandler.go │ ├── ICoreWebView2ExecuteScriptCompletedHandler.go │ ├── ICoreWebView2ExecuteScriptResult.go │ ├── ICoreWebView2ExecuteScriptWithResultCompletedHandler.go │ ├── ICoreWebView2FaviconChangedEventHandler.go │ ├── ICoreWebView2File.go │ ├── ICoreWebView2FileSystemHandle.go │ ├── ICoreWebView2FocusChangedEventHandler.go │ ├── ICoreWebView2Frame.go │ ├── ICoreWebView2Frame2.go │ ├── ICoreWebView2Frame3.go │ ├── ICoreWebView2Frame4.go │ ├── ICoreWebView2Frame5.go │ ├── ICoreWebView2Frame6.go │ ├── ICoreWebView2FrameContentLoadingEventHandler.go │ ├── ICoreWebView2FrameCreatedEventArgs.go │ ├── ICoreWebView2FrameCreatedEventHandler.go │ ├── ICoreWebView2FrameDOMContentLoadedEventHandler.go │ ├── ICoreWebView2FrameDestroyedEventHandler.go │ ├── ICoreWebView2FrameInfo.go │ ├── ICoreWebView2FrameInfo2.go │ ├── ICoreWebView2FrameInfoCollection.go │ ├── ICoreWebView2FrameInfoCollectionIterator.go │ ├── ICoreWebView2FrameNameChangedEventHandler.go │ ├── ICoreWebView2FrameNavigationCompletedEventHandler.go │ ├── ICoreWebView2FrameNavigationStartingEventHandler.go │ ├── ICoreWebView2FramePermissionRequestedEventHandler.go │ ├── ICoreWebView2FrameScreenCaptureStartingEventHandler.go │ ├── ICoreWebView2FrameWebMessageReceivedEventHandler.go │ ├── ICoreWebView2GetCookiesCompletedHandler.go │ ├── ICoreWebView2GetFaviconCompletedHandler.go │ ├── ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler.go │ ├── ICoreWebView2GetProcessExtendedInfosCompletedHandler.go │ ├── ICoreWebView2HistoryChangedEventHandler.go │ ├── ICoreWebView2HttpHeadersCollectionIterator.go │ ├── ICoreWebView2HttpRequestHeaders.go │ ├── ICoreWebView2HttpResponseHeaders.go │ ├── ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler.go │ ├── ICoreWebView2IsDocumentPlayingAudioChangedEventHandler.go │ ├── ICoreWebView2IsMutedChangedEventHandler.go │ ├── ICoreWebView2LaunchingExternalUriSchemeEventArgs.go │ ├── ICoreWebView2LaunchingExternalUriSchemeEventHandler.go │ ├── ICoreWebView2MoveFocusRequestedEventArgs.go │ ├── ICoreWebView2MoveFocusRequestedEventHandler.go │ ├── ICoreWebView2NavigationCompletedEventArgs.go │ ├── ICoreWebView2NavigationCompletedEventArgs2.go │ ├── ICoreWebView2NavigationCompletedEventHandler.go │ ├── ICoreWebView2NavigationStartingEventArgs.go │ ├── ICoreWebView2NavigationStartingEventArgs2.go │ ├── ICoreWebView2NavigationStartingEventArgs3.go │ ├── ICoreWebView2NavigationStartingEventHandler.go │ ├── ICoreWebView2NewBrowserVersionAvailableEventHandler.go │ ├── ICoreWebView2NewWindowRequestedEventArgs.go │ ├── ICoreWebView2NewWindowRequestedEventArgs2.go │ ├── ICoreWebView2NewWindowRequestedEventArgs3.go │ ├── ICoreWebView2NewWindowRequestedEventHandler.go │ ├── ICoreWebView2NonClientRegionChangedEventArgs.go │ ├── ICoreWebView2NonClientRegionChangedEventHandler.go │ ├── ICoreWebView2Notification.go │ ├── ICoreWebView2NotificationCloseRequestedEventHandler.go │ ├── ICoreWebView2NotificationReceivedEventArgs.go │ ├── ICoreWebView2NotificationReceivedEventHandler.go │ ├── ICoreWebView2ObjectCollection.go │ ├── ICoreWebView2ObjectCollectionView.go │ ├── ICoreWebView2PermissionRequestedEventArgs.go │ ├── ICoreWebView2PermissionRequestedEventArgs2.go │ ├── ICoreWebView2PermissionRequestedEventArgs3.go │ ├── ICoreWebView2PermissionRequestedEventHandler.go │ ├── ICoreWebView2PermissionSetting.go │ ├── ICoreWebView2PermissionSettingCollectionView.go │ ├── ICoreWebView2PointerInfo.go │ ├── ICoreWebView2PrintCompletedHandler.go │ ├── ICoreWebView2PrintSettings.go │ ├── ICoreWebView2PrintSettings2.go │ ├── ICoreWebView2PrintToPdfCompletedHandler.go │ ├── ICoreWebView2PrintToPdfStreamCompletedHandler.go │ ├── ICoreWebView2ProcessExtendedInfo.go │ ├── ICoreWebView2ProcessExtendedInfoCollection.go │ ├── ICoreWebView2ProcessFailedEventArgs.go │ ├── ICoreWebView2ProcessFailedEventArgs2.go │ ├── ICoreWebView2ProcessFailedEventArgs3.go │ ├── ICoreWebView2ProcessFailedEventHandler.go │ ├── ICoreWebView2ProcessInfo.go │ ├── ICoreWebView2ProcessInfoCollection.go │ ├── ICoreWebView2ProcessInfosChangedEventHandler.go │ ├── ICoreWebView2Profile.go │ ├── ICoreWebView2Profile2.go │ ├── ICoreWebView2Profile3.go │ ├── ICoreWebView2Profile4.go │ ├── ICoreWebView2Profile5.go │ ├── ICoreWebView2Profile6.go │ ├── ICoreWebView2Profile7.go │ ├── ICoreWebView2Profile8.go │ ├── ICoreWebView2ProfileAddBrowserExtensionCompletedHandler.go │ ├── ICoreWebView2ProfileDeletedEventHandler.go │ ├── ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler.go │ ├── ICoreWebView2RasterizationScaleChangedEventHandler.go │ ├── ICoreWebView2RegionRectCollectionView.go │ ├── ICoreWebView2SaveAsUIShowingEventArgs.go │ ├── ICoreWebView2SaveAsUIShowingEventHandler.go │ ├── ICoreWebView2SaveFileSecurityCheckStartingEventArgs.go │ ├── ICoreWebView2SaveFileSecurityCheckStartingEventHandler.go │ ├── ICoreWebView2ScreenCaptureStartingEventArgs.go │ ├── ICoreWebView2ScreenCaptureStartingEventHandler.go │ ├── ICoreWebView2ScriptDialogOpeningEventArgs.go │ ├── ICoreWebView2ScriptDialogOpeningEventHandler.go │ ├── ICoreWebView2ScriptException.go │ ├── ICoreWebView2ServerCertificateErrorDetectedEventArgs.go │ ├── ICoreWebView2ServerCertificateErrorDetectedEventHandler.go │ ├── ICoreWebView2SetPermissionStateCompletedHandler.go │ ├── ICoreWebView2Settings.go │ ├── ICoreWebView2Settings2.go │ ├── ICoreWebView2Settings3.go │ ├── ICoreWebView2Settings4.go │ ├── ICoreWebView2Settings5.go │ ├── ICoreWebView2Settings6.go │ ├── ICoreWebView2Settings7.go │ ├── ICoreWebView2Settings8.go │ ├── ICoreWebView2Settings9.go │ ├── ICoreWebView2SharedBuffer.go │ ├── ICoreWebView2ShowSaveAsUICompletedHandler.go │ ├── ICoreWebView2SourceChangedEventArgs.go │ ├── ICoreWebView2SourceChangedEventHandler.go │ ├── ICoreWebView2StateChangedEventHandler.go │ ├── ICoreWebView2StatusBarTextChangedEventHandler.go │ ├── ICoreWebView2StringCollection.go │ ├── ICoreWebView2TrySuspendCompletedHandler.go │ ├── ICoreWebView2WebMessageReceivedEventArgs.go │ ├── ICoreWebView2WebMessageReceivedEventArgs2.go │ ├── ICoreWebView2WebMessageReceivedEventHandler.go │ ├── ICoreWebView2WebResourceRequest.go │ ├── ICoreWebView2WebResourceRequestedEventArgs.go │ ├── ICoreWebView2WebResourceRequestedEventArgs2.go │ ├── ICoreWebView2WebResourceRequestedEventHandler.go │ ├── ICoreWebView2WebResourceResponse.go │ ├── ICoreWebView2WebResourceResponseReceivedEventArgs.go │ ├── ICoreWebView2WebResourceResponseReceivedEventHandler.go │ ├── ICoreWebView2WebResourceResponseView.go │ ├── ICoreWebView2WebResourceResponseViewGetContentCompletedHandler.go │ ├── ICoreWebView2WindowCloseRequestedEventHandler.go │ ├── ICoreWebView2WindowFeatures.go │ ├── ICoreWebView2ZoomFactorChangedEventHandler.go │ ├── ICoreWebView2_10.go │ ├── ICoreWebView2_11.go │ ├── ICoreWebView2_12.go │ ├── ICoreWebView2_13.go │ ├── ICoreWebView2_14.go │ ├── ICoreWebView2_15.go │ ├── ICoreWebView2_16.go │ ├── ICoreWebView2_17.go │ ├── ICoreWebView2_18.go │ ├── ICoreWebView2_19.go │ ├── ICoreWebView2_2.go │ ├── ICoreWebView2_20.go │ ├── ICoreWebView2_21.go │ ├── ICoreWebView2_22.go │ ├── ICoreWebView2_23.go │ ├── ICoreWebView2_24.go │ ├── ICoreWebView2_25.go │ ├── ICoreWebView2_26.go │ ├── ICoreWebView2_27.go │ ├── ICoreWebView2_3.go │ ├── ICoreWebView2_4.go │ ├── ICoreWebView2_5.go │ ├── ICoreWebView2_6.go │ ├── ICoreWebView2_7.go │ ├── ICoreWebView2_8.go │ ├── ICoreWebView2_9.go │ └── com.go ├── scripts ├── WebView2.1.0.1823.32.idl ├── WebView2.1.0.1901.177.idl ├── WebView2.1.0.2045.28.idl ├── WebView2.1.0.2592.51.idl ├── WebView2.1.0.2739.15.idl ├── WebView2.1.0.2903.40.idl ├── generator │ ├── README.md │ ├── enum_test.go │ ├── interface_bool_test.go │ ├── interface_enum_test.go │ ├── interface_int_test.go │ ├── interface_pointers_test.go │ ├── interface_string_pointer_test.go │ ├── interface_string_test.go │ ├── parser.go │ ├── testfiles │ │ ├── COREWEBVIEW2_KEY_EVENT_KIND.go.txt │ │ ├── COREWEBVIEW2_PREFERRED_COLOR_SCHEME.go.txt │ │ ├── COREWEBVIEW2_PREFERRED_COLOR_SCHEME1.go.txt │ │ ├── COREWEBVIEW2_PREFERRED_COLOR_SCHEME2.go.txt │ │ ├── ICoreWebView2.go.txt │ │ ├── ICoreWebView2AcceleratorKeyPressedEventArgs.go.txt │ │ ├── ICoreWebView2CustomSchemeRegistration.go.txt │ │ ├── ICoreWebView2FrameInfo.go.txt │ │ ├── ICoreWebView2ProcessFailedEventArgs2.go.txt │ │ └── ICoreWebView2_3.go.txt │ └── types │ │ ├── bool.go │ │ ├── enum.go │ │ ├── idl.go │ │ ├── interface.go │ │ ├── maps.go │ │ ├── param.go │ │ ├── struct.go │ │ ├── templates.go │ │ ├── templates │ │ ├── com.tmpl │ │ ├── enum.tmpl │ │ ├── inputStringSetup.tmpl │ │ ├── interfaceInvoke.tmpl │ │ ├── interfaceMethod.tmpl │ │ ├── interfacevtbl.tmpl │ │ ├── outputBoolCleanup.tmpl │ │ ├── outputBoolSetup.tmpl │ │ ├── outputDefaultSetup.tmpl │ │ ├── outputStringCleanup.tmpl │ │ ├── outputStringSetup.tmpl │ │ └── struct.tmpl │ │ └── uuid.go ├── go.mod ├── go.sum ├── latest_release_notes.txt ├── latest_version.txt ├── test.md └── update_version_mapping.go └── webviewloader ├── LICENSE ├── README.md ├── arm64 └── WebView2Loader.dll ├── env_create.go ├── env_create_completed.go ├── env_create_options.go ├── find_dll.go ├── find_dll_installed.go ├── native_module.go ├── native_module_386.go ├── native_module_amd64.go ├── native_module_arm64.go ├── syscall.go ├── version.go ├── x64 └── WebView2Loader.dll └── x86 └── WebView2Loader.dll /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | pkg/edge_generated 3 | /.aider.tags.cache.v3/ 4 | .aider* 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## [Unreleased] 4 | 5 | - Added support for drag and drop of files and folders. [@ayatkyo](https://github.com/ayatkyo) in [#1](https://github.com/wailsapp/go-webview2/pull/1). -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 John Chadwick 4 | Some portions Copyright (c) 2017 Serge Zaitsev 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | This is a locally maintained fork of [go-webview2](https://github.com/jchv/go-webview2) 3 | that is intended to be used with Wails applications. It is not intended to be used 4 | as a standalone package. 5 | 6 | ---------------- 7 | 8 | To update this package, run the following commands: 9 | 10 | ```bash 11 | task update 12 | ``` 13 | 14 | ---------------- 15 | 16 | Original README.md follows: 17 | 18 | # go-webview2 19 | 20 | This is a proof of concept for embedding Webview2 into Go without CGo. It is based 21 | on [webview/webview](https://github.com/webview/webview) and provides a compatible API. 22 | 23 | ## Notice 24 | 25 | Because this version doesn't currently have an EdgeHTML fallback, it will not work unless you have a Webview2 runtime 26 | installed. In addition, it requires the Webview2Loader DLL in order to function. Adding an EdgeHTML fallback should be 27 | technically possible but will likely require much worse hacks since the API is not strictly COM to my knowledge. 28 | 29 | ## Demo 30 | 31 | For now, you'll need to install the Webview2 runtime, as it does not ship with Windows. 32 | 33 | [WebView2 runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) 34 | 35 | After that, you should be able to run go-webview2 directly: 36 | 37 | ``` 38 | go run go-webview2/cmd/demo 39 | ``` 40 | 41 | This will use go-winloader to load an embedded copy of WebView2Loader.dll. 42 | 43 | If this does not work, please try running from a directory that has an appropriate copy of `WebView2Loader.dll` for your 44 | GOARCH. If _that_ worked, *please* file a bug so we can figure out what's wrong with go-winloader :) 45 | -------------------------------------------------------------------------------- /Taskfile.yml: -------------------------------------------------------------------------------- 1 | # https://taskfile.dev 2 | 3 | version: '3' 4 | 5 | tasks: 6 | 7 | commit: 8 | cmds: 9 | - git add . 10 | - git commit -m "Updated mappings" 11 | 12 | gofmt: 13 | dir: pkg/webview2 14 | cmds: 15 | - go fmt 16 | 17 | test: 18 | cmds: 19 | - go test ./... 20 | 21 | update: 22 | dir: scripts 23 | cmds: 24 | - go run update_version_mapping.go 25 | - task: gofmt 26 | - go fmt update_version_mapping.go 27 | - task: test 28 | - task: commit 29 | 30 | update:forced: 31 | dir: scripts 32 | cmds: 33 | - go run update_version_mapping.go -forced 34 | - task: gofmt 35 | - go fmt update_version_mapping.go 36 | - task: test 37 | - task: commit 38 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/wailsapp/go-webview2 2 | 3 | go 1.20 4 | 5 | require ( 6 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e 7 | github.com/stretchr/testify v1.9.0 8 | golang.org/x/sys v0.27.0 9 | ) 10 | 11 | require ( 12 | github.com/davecgh/go-spew v1.1.1 // indirect 13 | github.com/pmezard/go-difflib v1.0.0 // indirect 14 | gopkg.in/yaml.v3 v3.0.1 // indirect 15 | ) 16 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= 4 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= 5 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 6 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 7 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 8 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 9 | golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 10 | golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= 11 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 12 | golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= 13 | golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 14 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 15 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 16 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 17 | -------------------------------------------------------------------------------- /pkg/combridge/iunknown.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package combridge 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | ) 8 | 9 | const iUnknownGUID = "{00000000-0000-0000-C000-000000000046}" 10 | 11 | func init() { 12 | registerVTableInternal[IUnknown, IUnknown]( 13 | iUnknownGUID, 14 | true, 15 | iUnknownQueryInterface, 16 | iUnknownAddRef, 17 | iUnknownRelease, 18 | ) 19 | } 20 | 21 | type IUnknown interface{} 22 | 23 | func iUnknownQueryInterface(this uintptr, refiid *windows.GUID, ppvObject *uintptr) uintptr { 24 | if refiid == nil || ppvObject == nil { 25 | return uintptr(windows.E_INVALIDARG) 26 | } 27 | 28 | comIfcePointersL.RLock() 29 | obj := comIfcePointers[this] 30 | comIfcePointersL.RUnlock() 31 | 32 | ref := obj.queryInterface(refiid.String(), true) 33 | if ref != 0 { 34 | *ppvObject = ref 35 | return windows.NO_ERROR 36 | } 37 | 38 | *ppvObject = 0 39 | return uintptr(windows.E_NOINTERFACE) 40 | } 41 | 42 | func iUnknownAddRef(this uintptr) uintptr { 43 | comIfcePointersL.RLock() 44 | obj := comIfcePointers[this] 45 | comIfcePointersL.RUnlock() 46 | 47 | return uintptr(obj.addRef()) 48 | } 49 | 50 | func iUnknownRelease(this uintptr) uintptr { 51 | comIfcePointersL.RLock() 52 | obj := comIfcePointers[this] 53 | comIfcePointersL.RUnlock() 54 | 55 | return uintptr(obj.release()) 56 | } 57 | -------------------------------------------------------------------------------- /pkg/combridge/iunknown_impl.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package combridge 4 | 5 | import ( 6 | "syscall" 7 | "unsafe" 8 | 9 | "golang.org/x/sys/windows" 10 | ) 11 | 12 | // IUnknownFromPointer cast a generic pointer into a IUnknownImpl pointer 13 | func IUnknownFromPointer(ref unsafe.Pointer) *IUnknownImpl { 14 | return (*IUnknownImpl)(ref) 15 | } 16 | 17 | // IUnknownFromPointer cast native pointer into a IUnknownImpl pointer 18 | func IUnknownFromUintptr(ref uintptr) *IUnknownImpl { 19 | return IUnknownFromPointer(unsafe.Pointer(ref)) 20 | } 21 | 22 | type IUnknownVtbl struct { 23 | queryInterface uintptr 24 | addRef uintptr 25 | release uintptr 26 | } 27 | 28 | func (i *IUnknownVtbl) QueryInterface(this unsafe.Pointer, refiid *windows.GUID, ppvObject **IUnknownImpl) error { 29 | r, _, _ := syscall.SyscallN( 30 | i.queryInterface, 31 | uintptr(this), 32 | uintptr(unsafe.Pointer(refiid)), 33 | uintptr(unsafe.Pointer(ppvObject)), 34 | ) 35 | 36 | if r != uintptr(windows.S_OK) { 37 | return syscall.Errno(r) 38 | } 39 | 40 | return nil 41 | } 42 | 43 | func (i *IUnknownVtbl) AddRef(this unsafe.Pointer) uint32 { 44 | r, _, _ := syscall.SyscallN( 45 | i.addRef, 46 | uintptr(this), 47 | ) 48 | return uint32(r) 49 | } 50 | 51 | func (i *IUnknownVtbl) Release(this unsafe.Pointer) uint32 { 52 | r, _, _ := syscall.SyscallN( 53 | i.release, 54 | uintptr(this), 55 | ) 56 | 57 | return uint32(r) 58 | } 59 | 60 | type IUnknownImpl struct { 61 | vtbl *IUnknownVtbl 62 | } 63 | 64 | func (i *IUnknownImpl) QueryInterface(refiid *windows.GUID, ppvObject **IUnknownImpl) error { 65 | return i.vtbl.QueryInterface(unsafe.Pointer(i), refiid, ppvObject) 66 | } 67 | 68 | func (i *IUnknownImpl) AddRef() uint32 { 69 | return i.vtbl.AddRef(unsafe.Pointer(i)) 70 | } 71 | 72 | func (i *IUnknownImpl) Release() uint32 { 73 | return i.vtbl.Release(unsafe.Pointer(i)) 74 | } 75 | -------------------------------------------------------------------------------- /pkg/combridge/syscall.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package combridge 4 | 5 | import ( 6 | "unsafe" 7 | 8 | "golang.org/x/sys/windows" 9 | ) 10 | 11 | var ( 12 | modkernel32 = windows.NewLazySystemDLL("kernel32.dll") 13 | procGlobalAlloc = modkernel32.NewProc("GlobalAlloc") 14 | procGlobalFree = modkernel32.NewProc("GlobalFree") 15 | 16 | uintptrSize = unsafe.Sizeof(uintptr(0)) 17 | ) 18 | 19 | func allocUintptrObject(size int) (uintptr, []uintptr) { 20 | v := globalAlloc(uintptr(size) * uintptrSize) 21 | slice := unsafe.Slice((*uintptr)(unsafe.Pointer(v)), size) 22 | return v, slice 23 | } 24 | 25 | func globalAlloc(dwBytes uintptr) uintptr { 26 | ret, _, _ := procGlobalAlloc.Call(uintptr(0), dwBytes) 27 | if ret == 0 { 28 | panic("globalAlloc failed") 29 | } 30 | 31 | return ret 32 | } 33 | 34 | func globalFree(data uintptr) { 35 | ret, _, _ := procGlobalFree.Call(data) 36 | if ret != 0 { 37 | panic("globalFree failed") 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_BOUNDS_MODE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_BOUNDS_MODE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS = 0 9 | COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_COLOR.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_COLOR struct { 6 | A uint8 7 | R uint8 8 | G uint8 9 | B uint8 10 | } 11 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY = iota 9 | COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW 10 | COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_KEY_EVENT_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_KEY_EVENT_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN = 0 9 | COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP = 1 10 | COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN = 2 11 | COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_MOVE_FOCUS_REASON.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_MOVE_FOCUS_REASON uint32 6 | 7 | const ( 8 | COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC = 0 9 | COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT = 1 10 | COREWEBVIEW2_MOVE_FOCUS_REASON_PREVIOUS = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_PHYSICAL_KEY_STATUS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_PHYSICAL_KEY_STATUS struct { 6 | RepeatCount uint32 7 | ScanCode uint32 8 | IsExtendedKey bool 9 | IsMenuKeyDown bool 10 | WasKeyDown bool 11 | IsKeyReleased bool 12 | } 13 | 14 | // Bools need to be int32 in the native struct otherwise we end up in memory corruption. Using the internal 15 | // struct is a hacky way so we don't break the public interface. 16 | type internal_COREWEBVIEW2_PHYSICAL_KEY_STATUS struct { 17 | RepeatCount uint32 18 | ScanCode uint32 19 | IsExtendedKey int32 20 | IsMenuKeyDown int32 21 | WasKeyDown int32 22 | IsKeyReleased int32 23 | } 24 | -------------------------------------------------------------------------------- /pkg/edge/COREWEBVIEW2_WEB_RESOURCE_CONTEXT.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | type COREWEBVIEW2_WEB_RESOURCE_CONTEXT uint32 6 | 7 | const ( 8 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL = 0 9 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT = 1 10 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET = 2 11 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE = 3 12 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA = 4 13 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT = 5 14 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT = 6 15 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST = 7 16 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH = 8 17 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK = 9 18 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE = 10 19 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET = 11 20 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST = 12 21 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE = 13 22 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING = 14 23 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT = 15 24 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_OTHER = 16 25 | ) 26 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2ContainsFullScreenElementChangedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "unsafe" 7 | ) 8 | 9 | type _ICoreWebView2ContainsFullScreenElementChangedEventArgsVtbl struct { 10 | _IUnknownVtbl 11 | } 12 | 13 | type ICoreWebView2ContainsFullScreenElementChangedEventArgs struct { 14 | vtbl *_ICoreWebView2ContainsFullScreenElementChangedEventArgsVtbl 15 | } 16 | 17 | func (i *ICoreWebView2ContainsFullScreenElementChangedEventArgs) AddRef() uintptr { 18 | ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 19 | 20 | return ret 21 | } 22 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2CookieList.go: -------------------------------------------------------------------------------- 1 | package edge 2 | 3 | import ( 4 | "syscall" 5 | "unsafe" 6 | ) 7 | 8 | // ICoreWebView2CookieList vtable 9 | type iCoreWebView2CookieListVtbl struct { 10 | _IUnknownVtbl 11 | GetCount ComProc 12 | GetItem ComProc 13 | } 14 | 15 | // ICoreWebView2CookieList represents a list of cookies 16 | type ICoreWebView2CookieList struct { 17 | vtbl *iCoreWebView2CookieListVtbl 18 | } 19 | 20 | // AddRef increments reference count of the ICoreWebView2CookieList interface 21 | func (i *ICoreWebView2CookieList) AddRef() uint32 { 22 | ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | 24 | return uint32(ret) 25 | } 26 | 27 | // Release decrements reference count of the ICoreWebView2CookieList interface 28 | func (i *ICoreWebView2CookieList) Release() uint32 { 29 | ret, _, _ := i.vtbl.Release.Call(uintptr(unsafe.Pointer(i))) 30 | 31 | return uint32(ret) 32 | } 33 | 34 | // GetCount gets the number of cookies in the list 35 | func (i *ICoreWebView2CookieList) GetCount() (uint32, error) { 36 | var count uint32 37 | hr, _, _ := i.vtbl.GetCount.Call( 38 | uintptr(unsafe.Pointer(i)), 39 | uintptr(unsafe.Pointer(&count)), 40 | ) 41 | if hr != 0 { 42 | return 0, syscall.Errno(hr) 43 | } 44 | return count, nil 45 | } 46 | 47 | // GetItem gets the cookie at the specified index 48 | func (i *ICoreWebView2CookieList) GetItem(index uint32) (*ICoreWebView2Cookie, error) { 49 | var cookie *ICoreWebView2Cookie 50 | hr, _, _ := i.vtbl.GetItem.Call( 51 | uintptr(unsafe.Pointer(i)), 52 | uintptr(index), 53 | uintptr(unsafe.Pointer(&cookie)), 54 | ) 55 | if hr != 0 { 56 | return nil, syscall.Errno(hr) 57 | } 58 | return cookie, nil 59 | } 60 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2Deferral.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "errors" 7 | "syscall" 8 | "unsafe" 9 | 10 | "golang.org/x/sys/windows" 11 | ) 12 | 13 | type ICoreWebView2DeferralVtbl struct { 14 | _IUnknownVtbl 15 | Complete ComProc 16 | } 17 | 18 | type ICoreWebView2Deferral struct { 19 | Vtbl *ICoreWebView2DeferralVtbl 20 | } 21 | 22 | // AddRef increments the reference count of ICoreWebView2Deferral interface 23 | func (i *ICoreWebView2Deferral) AddRef() error { 24 | _, _, err := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 25 | if err != nil && !errors.Is(err, windows.ERROR_SUCCESS) { 26 | return err 27 | } 28 | 29 | return nil 30 | } 31 | 32 | // Release decrements the reference count of ICoreWebView2Deferral interface 33 | func (i *ICoreWebView2Deferral) Release() error { 34 | _, _, err := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 35 | if err != nil && !errors.Is(err, windows.ERROR_SUCCESS) { 36 | return err 37 | } 38 | 39 | return nil 40 | } 41 | 42 | func (i *ICoreWebView2Deferral) Complete() error { 43 | hr, _, _ := i.Vtbl.Complete.Call( 44 | uintptr(unsafe.Pointer(i)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return syscall.Errno(hr) 48 | } 49 | return nil 50 | } 51 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2File.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "unsafe" 7 | 8 | "golang.org/x/sys/windows" 9 | ) 10 | 11 | type _ICoreWebView2FileVtbl struct { 12 | _IUnknownVtbl 13 | GetPath ComProc 14 | } 15 | 16 | type ICoreWebView2File struct { 17 | vtbl *_ICoreWebView2FileVtbl 18 | } 19 | 20 | func (i *ICoreWebView2File) AddRef() uint32 { 21 | ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | 23 | return uint32(ret) 24 | } 25 | 26 | func (i *ICoreWebView2File) Release() uint32 { 27 | ret, _, _ := i.vtbl.Release.Call(uintptr(unsafe.Pointer(i))) 28 | 29 | return uint32(ret) 30 | } 31 | 32 | func (i *ICoreWebView2File) GetPath() (string, error) { 33 | 34 | var _path *uint16 35 | hr, _, _ := i.vtbl.GetPath.Call( 36 | uintptr(unsafe.Pointer(i)), 37 | uintptr(unsafe.Pointer(&_path)), 38 | ) 39 | if windows.Handle(hr) != windows.S_OK { 40 | return "", windows.Errno(hr) 41 | } 42 | 43 | path := windows.UTF16PtrToString(_path) 44 | windows.CoTaskMemFree(unsafe.Pointer(_path)) 45 | return path, nil 46 | } 47 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2HttpResponseHeaders.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "syscall" 7 | "unsafe" 8 | 9 | "golang.org/x/sys/windows" 10 | ) 11 | 12 | type _ICoreWebView2HttpResponseHeadersVtbl struct { 13 | _IUnknownVtbl 14 | AppendHeader ComProc 15 | Contains ComProc 16 | GetHeader ComProc 17 | GetHeaders ComProc 18 | GetIterator ComProc 19 | } 20 | 21 | type ICoreWebView2HttpResponseHeaders struct { 22 | vtbl *_ICoreWebView2HttpResponseHeadersVtbl 23 | } 24 | 25 | func (i *ICoreWebView2HttpResponseHeaders) AddRef() uint32 { 26 | ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 27 | 28 | return uint32(ret) 29 | } 30 | 31 | func (i *ICoreWebView2HttpResponseHeaders) Release() uint32 { 32 | ret, _, _ := i.vtbl.Release.Call(uintptr(unsafe.Pointer(i))) 33 | 34 | return uint32(ret) 35 | } 36 | 37 | func (i *ICoreWebView2HttpResponseHeaders) AppendHeader(name string, value string) error { 38 | // Convert string 'name' to *uint16 39 | _name, err := UTF16PtrFromString(name) 40 | if err != nil { 41 | return err 42 | } 43 | // Convert string 'value' to *uint16 44 | _value, err := UTF16PtrFromString(value) 45 | if err != nil { 46 | return err 47 | } 48 | 49 | hr, _, _ := i.vtbl.AppendHeader.Call( 50 | uintptr(unsafe.Pointer(i)), 51 | uintptr(unsafe.Pointer(_name)), 52 | uintptr(unsafe.Pointer(_value)), 53 | ) 54 | if windows.Handle(hr) != windows.S_OK { 55 | return syscall.Errno(hr) 56 | } 57 | return nil 58 | } 59 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2NavigationCompletedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "unsafe" 7 | ) 8 | 9 | type _ICoreWebView2NavigationCompletedEventArgsVtbl struct { 10 | _IUnknownVtbl 11 | GetIsSuccess ComProc 12 | GetWebErrorStatus ComProc 13 | GetNavigationId ComProc 14 | } 15 | 16 | type ICoreWebView2NavigationCompletedEventArgs struct { 17 | vtbl *_ICoreWebView2NavigationCompletedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2NavigationCompletedEventArgs) AddRef() uint32 { 21 | ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | 23 | return uint32(ret) 24 | } 25 | 26 | func (i *ICoreWebView2NavigationCompletedEventArgs) Release() uint32 { 27 | ret, _, _ := i.vtbl.Release.Call(uintptr(unsafe.Pointer(i))) 28 | 29 | return uint32(ret) 30 | } 31 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2ObjectCollectionView.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "unsafe" 7 | 8 | "golang.org/x/sys/windows" 9 | ) 10 | 11 | type _ICoreWebView2ObjectCollectionViewVtbl struct { 12 | _IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2ObjectCollectionView struct { 18 | vtbl *_ICoreWebView2ObjectCollectionViewVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ObjectCollectionView) AddRef() error { 22 | i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | 24 | return nil 25 | } 26 | 27 | func (i *ICoreWebView2ObjectCollectionView) Release() error { 28 | i.vtbl.Release.Call(uintptr(unsafe.Pointer(i))) 29 | 30 | return nil 31 | } 32 | 33 | func (i *ICoreWebView2ObjectCollectionView) GetCount() (uint32, error) { 34 | 35 | var value uint32 36 | hr, _, _ := i.vtbl.GetCount.Call( 37 | uintptr(unsafe.Pointer(i)), 38 | uintptr(unsafe.Pointer(&value)), 39 | ) 40 | if windows.Handle(hr) != windows.S_OK { 41 | return 0, windows.Errno(hr) 42 | } 43 | return value, nil 44 | } 45 | 46 | func (i *ICoreWebView2ObjectCollectionView) GetValueAtIndex(index uint32) (*_IUnknownVtbl, error) { 47 | 48 | var value *_IUnknownVtbl 49 | hr, _, _ := i.vtbl.GetValueAtIndex.Call( 50 | uintptr(unsafe.Pointer(i)), 51 | uintptr(index), 52 | uintptr(unsafe.Pointer(&value)), 53 | ) 54 | if windows.Handle(hr) != windows.S_OK { 55 | return nil, windows.Errno(hr) 56 | } 57 | return value, nil 58 | } 59 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2ProcessFailedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "fmt" 7 | "syscall" 8 | "unsafe" 9 | 10 | "golang.org/x/sys/windows" 11 | ) 12 | 13 | type _ICoreWebView2ProcessFailedEventArgsVtbl struct { 14 | _IUnknownVtbl 15 | GetProcessFailedKind ComProc 16 | } 17 | 18 | type ICoreWebView2ProcessFailedEventArgs struct { 19 | vtbl *_ICoreWebView2ProcessFailedEventArgsVtbl 20 | } 21 | 22 | func (i *ICoreWebView2ProcessFailedEventArgs) GetProcessFailedKind() (COREWEBVIEW2_PROCESS_FAILED_KIND, error) { 23 | kind := COREWEBVIEW2_PROCESS_FAILED_KIND(0xffffffff) 24 | hr, _, _ := i.vtbl.GetProcessFailedKind.Call( 25 | uintptr(unsafe.Pointer(i)), 26 | uintptr(unsafe.Pointer(&kind)), 27 | ) 28 | 29 | if windows.Handle(hr) != windows.S_OK { 30 | return 0, syscall.Errno(hr) 31 | } 32 | 33 | if kind == 0xffffffff { 34 | return 0, fmt.Errorf("unknown error") 35 | } 36 | 37 | return kind, nil 38 | } 39 | -------------------------------------------------------------------------------- /pkg/edge/ICoreWebView2WebMessageReceivedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "unsafe" 7 | 8 | "golang.org/x/sys/windows" 9 | ) 10 | 11 | type iCoreWebView2WebMessageReceivedEventArgsVtbl struct { 12 | _IUnknownVtbl 13 | GetSource ComProc 14 | GetWebMessageAsJSON ComProc 15 | TryGetWebMessageAsString ComProc 16 | GetAdditionalObjects ComProc 17 | } 18 | 19 | type ICoreWebView2WebMessageReceivedEventArgs struct { 20 | vtbl *iCoreWebView2WebMessageReceivedEventArgsVtbl 21 | } 22 | 23 | func (i *ICoreWebView2WebMessageReceivedEventArgs) GetAdditionalObjects() (*ICoreWebView2ObjectCollectionView, error) { 24 | var value *ICoreWebView2ObjectCollectionView 25 | 26 | hr, _, _ := i.vtbl.GetAdditionalObjects.Call( 27 | uintptr(unsafe.Pointer(i)), 28 | uintptr(unsafe.Pointer(&value)), 29 | ) 30 | if windows.Handle(hr) != windows.S_OK { 31 | return nil, windows.Errno(hr) 32 | } 33 | return value, nil 34 | } 35 | 36 | func (i *ICoreWebView2WebMessageReceivedEventArgs) TryGetWebMessageAsString() (string, error) { 37 | var u16msg *uint16 38 | 39 | hr, _, _ := i.vtbl.TryGetWebMessageAsString.Call( 40 | uintptr(unsafe.Pointer(i)), 41 | uintptr(unsafe.Pointer(&u16msg)), 42 | ) 43 | if windows.Handle(hr) != windows.S_OK { 44 | return "", windows.Errno(hr) 45 | } 46 | defer windows.CoTaskMemFree(unsafe.Pointer(u16msg)) 47 | 48 | msg := windows.UTF16PtrToString(u16msg) 49 | 50 | return msg, nil 51 | } 52 | -------------------------------------------------------------------------------- /pkg/edge/IStream.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "errors" 7 | "io" 8 | "syscall" 9 | "unsafe" 10 | 11 | "golang.org/x/sys/windows" 12 | ) 13 | 14 | type _IStreamVtbl struct { 15 | _IUnknownVtbl 16 | Read ComProc 17 | Write ComProc 18 | } 19 | 20 | type IStream struct { 21 | vtbl *_IStreamVtbl 22 | } 23 | 24 | func (i *IStream) AddRef() error { 25 | _, _, err := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 26 | if err != nil && !errors.Is(err, windows.ERROR_SUCCESS) { 27 | return err 28 | } 29 | 30 | return nil 31 | } 32 | 33 | func (i *IStream) Release() error { 34 | _, _, err := i.vtbl.Release.Call(uintptr(unsafe.Pointer(i))) 35 | if err != nil && !errors.Is(err, windows.ERROR_SUCCESS) { 36 | return err 37 | } 38 | 39 | return nil 40 | } 41 | 42 | func (i *IStream) Read(p []byte) (int, error) { 43 | bufLen := len(p) 44 | if bufLen == 0 { 45 | return 0, nil 46 | } 47 | 48 | var n int 49 | hr, _, _ := i.vtbl.Read.Call( 50 | uintptr(unsafe.Pointer(i)), 51 | uintptr(unsafe.Pointer(&p[0])), 52 | uintptr(bufLen), 53 | uintptr(unsafe.Pointer(&n)), 54 | ) 55 | 56 | switch windows.Handle(hr) { 57 | case windows.S_OK: 58 | // The buffer has been completely filled 59 | return n, nil 60 | case windows.S_FALSE: 61 | // The buffer has been filled with less than len data and the stream is EOF 62 | return n, io.EOF 63 | default: 64 | return 0, syscall.Errno(hr) 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /pkg/edge/chromium_386.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | package edge 5 | 6 | import ( 7 | "github.com/wailsapp/go-webview2/internal/w32" 8 | ) 9 | 10 | func (e *Chromium) SetSize(bounds w32.Rect) { 11 | if e.controller == nil { 12 | return 13 | } 14 | 15 | err := e.controller.PutBounds(bounds) 16 | if err != nil { 17 | e.errorCallback(err) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/edge/chromium_amd64.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | package edge 5 | 6 | import ( 7 | "github.com/wailsapp/go-webview2/internal/w32" 8 | ) 9 | 10 | func (e *Chromium) SetSize(bounds w32.Rect) { 11 | if e.controller == nil { 12 | return 13 | } 14 | 15 | err := e.controller.PutBounds(bounds) 16 | if err != nil { 17 | e.errorCallback(err) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/edge/chromium_arm64.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | package edge 5 | 6 | import ( 7 | "unsafe" 8 | 9 | "github.com/wailsapp/go-webview2/internal/w32" 10 | "golang.org/x/sys/windows" 11 | ) 12 | 13 | func (e *Chromium) SetSize(bounds w32.Rect) { 14 | if e.controller == nil { 15 | return 16 | } 17 | 18 | words := (*[2]uintptr)(unsafe.Pointer(&bounds)) 19 | hr, _, _ := e.controller.vtbl.PutBounds.Call( 20 | uintptr(unsafe.Pointer(e.controller)), 21 | words[0], 22 | words[1], 23 | ) 24 | if windows.Handle(hr) != windows.S_OK { 25 | e.errorCallback(windows.Errno(hr)) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /pkg/edge/com.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package edge 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "unsafe" 8 | ) 9 | 10 | type EventRegistrationToken struct { 11 | value int64 12 | } 13 | 14 | // IUnknown 15 | type IUnknown struct { 16 | Vtbl *IUnknownVtbl 17 | } 18 | 19 | type IUnknownVtbl struct { 20 | QueryInterface ComProc 21 | AddRef ComProc 22 | Release ComProc 23 | } 24 | 25 | func (i *IUnknownVtbl) CallRelease(this unsafe.Pointer) uint32 { 26 | ret, _, _ := i.Release.Call( 27 | uintptr(this), 28 | ) 29 | 30 | return uint32(ret) 31 | } 32 | 33 | type IUnknownImpl interface { 34 | QueryInterface(refiid, object uintptr) uintptr 35 | AddRef() uintptr 36 | Release() uintptr 37 | } 38 | 39 | type POINT struct { 40 | X, Y int32 41 | } 42 | type RECT struct { 43 | Left int32 44 | Top int32 45 | Right int32 46 | Bottom int32 47 | } 48 | type HANDLE uintptr 49 | type HBRUSH uintptr 50 | type HCURSOR uintptr 51 | type HICON uintptr 52 | type HINSTANCE uintptr 53 | type HMENU uintptr 54 | type HMODULE uintptr 55 | type HWND uintptr 56 | 57 | // NOTE: For sure, this is wrong! 58 | type VARIANT uintptr 59 | 60 | type IDataObject struct { 61 | IUnknown 62 | } 63 | 64 | func ptr[T any](p T) *T { 65 | return &p 66 | } 67 | 68 | const ERROR_SUCCESS = windows.ERROR_SUCCESS 69 | 70 | func UTF16PtrFromString(s string) (*uint16, error) { 71 | return windows.UTF16PtrFromString(s) 72 | } 73 | 74 | func UTF16PtrToString(s *uint16) string { 75 | return windows.UTF16PtrToString(s) 76 | } 77 | 78 | func CoTaskMemFree(pv unsafe.Pointer) { 79 | windows.CoTaskMemFree(pv) 80 | } 81 | -------------------------------------------------------------------------------- /pkg/edge/create_env_go.go: -------------------------------------------------------------------------------- 1 | //go:build windows && !native_webview2loader 2 | 3 | package edge 4 | 5 | import ( 6 | "unsafe" 7 | 8 | "github.com/wailsapp/go-webview2/webviewloader" 9 | ) 10 | 11 | func createCoreWebView2EnvironmentWithOptions(browserExecutableFolder, userDataFolder string, environmentCompletedHandle *iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler, additionalBrowserArgs string) error { 12 | e := &environmentCreatedHandler{environmentCompletedHandle} 13 | return webviewloader.CreateCoreWebView2EnvironmentWithOptions( 14 | e, 15 | webviewloader.WithBrowserExecutableFolder(browserExecutableFolder), 16 | webviewloader.WithUserDataFolder(userDataFolder), 17 | webviewloader.WithAdditionalBrowserArguments(additionalBrowserArgs), 18 | ) 19 | } 20 | 21 | type environmentCreatedHandler struct { 22 | originalHandler *iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler 23 | } 24 | 25 | func (r *environmentCreatedHandler) EnvironmentCompleted(errorCode webviewloader.HRESULT, createdEnvironment *webviewloader.ICoreWebView2Environment) webviewloader.HRESULT { 26 | env := (*ICoreWebView2Environment)(unsafe.Pointer(createdEnvironment)) 27 | res := r.originalHandler.impl.EnvironmentCompleted(uintptr(errorCode), env) 28 | return webviewloader.HRESULT(res) 29 | } 30 | -------------------------------------------------------------------------------- /pkg/edge/create_env_native.go: -------------------------------------------------------------------------------- 1 | //go:build windows && native_webview2loader 2 | 3 | package edge 4 | 5 | import ( 6 | "fmt" 7 | "syscall" 8 | "unsafe" 9 | 10 | "github.com/wailsapp/go-webview2/webviewloader" 11 | 12 | "golang.org/x/sys/windows" 13 | ) 14 | 15 | func createCoreWebView2EnvironmentWithOptions(browserExecutableFolder, userDataFolder string, environmentCompletedHandle *iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler, additionalBrowserArgs string) error { 16 | browserPathPtr, err := windows.UTF16PtrFromString(browserExecutableFolder) 17 | if err != nil { 18 | return fmt.Errorf("Error calling UTF16PtrFromString for %s: %v", browserExecutableFolder, err) 19 | } 20 | 21 | userPathPtr, err := windows.UTF16PtrFromString(userDataFolder) 22 | if err != nil { 23 | return fmt.Errorf("Error calling UTF16PtrFromString for %s: %v", userDataFolder, err) 24 | } 25 | 26 | hr, err := webviewloader.CreateCoreWebView2EnvironmentWithOptions( 27 | browserPathPtr, 28 | userPathPtr, 29 | uintptr(unsafe.Pointer(environmentCompletedHandle)), 30 | additionalBrowserArgs, 31 | ) 32 | if err != nil { 33 | return fmt.Errorf("Error calling CreateCoreWebView2EnvironmentWithOptions: %v", err) 34 | } 35 | 36 | if hr != 0 { 37 | return syscall.Errno(hr) 38 | } 39 | 40 | return nil 41 | } 42 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_BOUNDS_MODE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_BOUNDS_MODE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS = 0 9 | COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_NORMAL = 0 9 | COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_FAILED = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_BROWSING_DATA_KINDS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_BROWSING_DATA_KINDS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS = 0x1 9 | COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB = 0x2 10 | COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE = 0x4 11 | COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL = 0x8 12 | COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE = 0x10 13 | COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE = 0x20 14 | COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES = 0x40 15 | COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE = 0x80 16 | COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE = 0x100 17 | COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY = 0x200 18 | COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL = 0x400 19 | COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE = 0x800 20 | COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY = 0x1000 21 | COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS = 0x2000 22 | COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_PROFILE = 0x4000 23 | COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS = 0x8000 24 | ) 25 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT uint32 6 | 7 | const ( 8 | COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_PNG = 0 9 | COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_JPEG = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_CHANNEL_SEARCH_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_CHANNEL_SEARCH_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE = 0 9 | COREWEBVIEW2_CHANNEL_SEARCH_KIND_LEAST_STABLE = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_CLIENT_CERTIFICATE_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_CLIENT_CERTIFICATE_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_SMART_CARD = 0 9 | COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_PIN = 1 10 | COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_OTHER = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_COLOR.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_COLOR struct { 6 | A uint8 7 | R uint8 8 | G uint8 9 | B uint8 10 | } 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND = 0 9 | COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_CHECK_BOX = 1 10 | COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_RADIO = 2 11 | COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SEPARATOR = 3 12 | COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SUBMENU = 4 13 | ) 14 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_PAGE = 0 9 | COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_IMAGE = 1 10 | COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT = 2 11 | COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_AUDIO = 3 12 | COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_VIDEO = 4 13 | ) 14 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_COOKIE_SAME_SITE_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_COOKIE_SAME_SITE_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE = 0 9 | COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX = 1 10 | COREWEBVIEW2_COOKIE_SAME_SITE_KIND_STRICT = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT uint32 6 | 7 | const ( 8 | COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_LEFT = 0 9 | COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_RIGHT = 1 10 | COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_LEFT = 2 11 | COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_RIGHT = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_DOWNLOAD_STATE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_DOWNLOAD_STATE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS = 0 9 | COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED = 1 10 | COREWEBVIEW2_DOWNLOAD_STATE_COMPLETED = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_FAVICON_IMAGE_FORMAT.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_FAVICON_IMAGE_FORMAT uint32 6 | 7 | const ( 8 | COREWEBVIEW2_FAVICON_IMAGE_FORMAT_PNG = 0 9 | COREWEBVIEW2_FAVICON_IMAGE_FORMAT_JPEG = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_FILE = 0 9 | COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_DIRECTORY = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION uint32 6 | 7 | const ( 8 | COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_ONLY = 0 9 | COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_WRITE = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_FRAME_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_FRAME_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_FRAME_KIND_UNKNOWN = 0 9 | COREWEBVIEW2_FRAME_KIND_MAIN_FRAME = 1 10 | COREWEBVIEW2_FRAME_KIND_IFRAME = 2 11 | COREWEBVIEW2_FRAME_KIND_EMBED = 3 12 | COREWEBVIEW2_FRAME_KIND_OBJECT = 4 13 | ) 14 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY = 0 9 | COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW = 1 10 | COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_KEY_EVENT_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_KEY_EVENT_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN = 0 9 | COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP = 1 10 | COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN = 2 11 | COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL uint32 6 | 7 | const ( 8 | COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL = 0 9 | COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_MOUSE_EVENT_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_MOUSE_EVENT_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL = 526 9 | COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK = 515 10 | COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN = 513 11 | COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP = 514 12 | COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE = 675 13 | COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK = 521 14 | COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN = 519 15 | COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP = 520 16 | COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE = 512 17 | COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK = 518 18 | COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN = 516 19 | COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP = 517 20 | COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL = 522 21 | COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK = 525 22 | COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN = 523 23 | COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP = 524 24 | COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_DOWN = 164 25 | COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_UP = 165 26 | ) 27 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE = 0x0 9 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON = 0x1 10 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_RIGHT_BUTTON = 0x2 11 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_SHIFT = 0x4 12 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_CONTROL = 0x8 13 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_MIDDLE_BUTTON = 0x10 14 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON1 = 0x20 15 | COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON2 = 0x40 16 | ) 17 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_MOVE_FOCUS_REASON.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_MOVE_FOCUS_REASON uint32 6 | 7 | const ( 8 | COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC = 0 9 | COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT = 1 10 | COREWEBVIEW2_MOVE_FOCUS_REASON_PREVIOUS = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_NAVIGATION_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_NAVIGATION_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_NAVIGATION_KIND_RELOAD = 0 9 | COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD = 1 10 | COREWEBVIEW2_NAVIGATION_KIND_NEW_DOCUMENT = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_NON_CLIENT_REGION_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_NON_CLIENT_REGION_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE = 0 9 | COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLIENT = 1 10 | COREWEBVIEW2_NON_CLIENT_REGION_KIND_CAPTION = 2 11 | COREWEBVIEW2_NON_CLIENT_REGION_KIND_MINIMIZE = 8 12 | COREWEBVIEW2_NON_CLIENT_REGION_KIND_MAXIMIZE = 9 13 | COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLOSE = 20 14 | ) 15 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PDF_TOOLBAR_ITEMS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PDF_TOOLBAR_ITEMS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_NONE = 0x0 9 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE = 0x1 10 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PRINT = 0x2 11 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE_AS = 0x4 12 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_IN = 0x8 13 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_OUT = 0x10 14 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ROTATE = 0x20 15 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FIT_PAGE = 0x40 16 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_LAYOUT = 0x80 17 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_BOOKMARKS = 0x100 18 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_SELECTOR = 0x200 19 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SEARCH = 0x400 20 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FULL_SCREEN = 0x800 21 | COREWEBVIEW2_PDF_TOOLBAR_ITEMS_MORE_SETTINGS = 0x1000 22 | ) 23 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PERMISSION_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PERMISSION_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PERMISSION_KIND_UNKNOWN_PERMISSION = 0 9 | COREWEBVIEW2_PERMISSION_KIND_MICROPHONE = 1 10 | COREWEBVIEW2_PERMISSION_KIND_CAMERA = 2 11 | COREWEBVIEW2_PERMISSION_KIND_GEOLOCATION = 3 12 | COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS = 4 13 | COREWEBVIEW2_PERMISSION_KIND_OTHER_SENSORS = 5 14 | COREWEBVIEW2_PERMISSION_KIND_CLIPBOARD_READ = 6 15 | COREWEBVIEW2_PERMISSION_KIND_MULTIPLE_AUTOMATIC_DOWNLOADS = 7 16 | COREWEBVIEW2_PERMISSION_KIND_FILE_READ_WRITE = 8 17 | COREWEBVIEW2_PERMISSION_KIND_AUTOPLAY = 9 18 | COREWEBVIEW2_PERMISSION_KIND_LOCAL_FONTS = 10 19 | COREWEBVIEW2_PERMISSION_KIND_MIDI_SYSTEM_EXCLUSIVE_MESSAGES = 11 20 | COREWEBVIEW2_PERMISSION_KIND_WINDOW_MANAGEMENT = 12 21 | ) 22 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PERMISSION_STATE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PERMISSION_STATE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PERMISSION_STATE_DEFAULT = 0 9 | COREWEBVIEW2_PERMISSION_STATE_ALLOW = 1 10 | COREWEBVIEW2_PERMISSION_STATE_DENY = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PHYSICAL_KEY_STATUS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PHYSICAL_KEY_STATUS struct { 6 | RepeatCount uint32 7 | ScanCode uint32 8 | IsExtendedKey bool 9 | IsMenuKeyDown bool 10 | WasKeyDown bool 11 | IsKeyReleased bool 12 | } 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_POINTER_EVENT_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_POINTER_EVENT_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_POINTER_EVENT_KIND_ACTIVATE = 587 9 | COREWEBVIEW2_POINTER_EVENT_KIND_DOWN = 582 10 | COREWEBVIEW2_POINTER_EVENT_KIND_ENTER = 585 11 | COREWEBVIEW2_POINTER_EVENT_KIND_LEAVE = 586 12 | COREWEBVIEW2_POINTER_EVENT_KIND_UP = 583 13 | COREWEBVIEW2_POINTER_EVENT_KIND_UPDATE = 581 14 | ) 15 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PREFERRED_COLOR_SCHEME.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PREFERRED_COLOR_SCHEME uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO = 0 9 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT = 1 10 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_COLLATION.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_COLLATION uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_COLLATION_DEFAULT = 0 9 | COREWEBVIEW2_PRINT_COLLATION_COLLATED = 1 10 | COREWEBVIEW2_PRINT_COLLATION_UNCOLLATED = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_COLOR_MODE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_COLOR_MODE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT = 0 9 | COREWEBVIEW2_PRINT_COLOR_MODE_COLOR = 1 10 | COREWEBVIEW2_PRINT_COLOR_MODE_GRAYSCALE = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_DIALOG_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_DIALOG_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER = 0 9 | COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_DUPLEX.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_DUPLEX uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_DUPLEX_DEFAULT = 0 9 | COREWEBVIEW2_PRINT_DUPLEX_ONE_SIDED = 1 10 | COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_LONG_EDGE = 2 11 | COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_SHORT_EDGE = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_MEDIA_SIZE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_MEDIA_SIZE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT = 0 9 | COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_ORIENTATION.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_ORIENTATION uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT = 0 9 | COREWEBVIEW2_PRINT_ORIENTATION_LANDSCAPE = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PRINT_STATUS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PRINT_STATUS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PRINT_STATUS_SUCCEEDED = 0 9 | COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE = 1 10 | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PROCESS_FAILED_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PROCESS_FAILED_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED = 0 9 | COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED = 1 10 | COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE = 2 11 | COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED = 3 12 | COREWEBVIEW2_PROCESS_FAILED_KIND_UTILITY_PROCESS_EXITED = 4 13 | COREWEBVIEW2_PROCESS_FAILED_KIND_SANDBOX_HELPER_PROCESS_EXITED = 5 14 | COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED = 6 15 | COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_PLUGIN_PROCESS_EXITED = 7 16 | COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_BROKER_PROCESS_EXITED = 8 17 | COREWEBVIEW2_PROCESS_FAILED_KIND_UNKNOWN_PROCESS_EXITED = 9 18 | ) 19 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PROCESS_FAILED_REASON.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PROCESS_FAILED_REASON uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED = 0 9 | COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE = 1 10 | COREWEBVIEW2_PROCESS_FAILED_REASON_TERMINATED = 2 11 | COREWEBVIEW2_PROCESS_FAILED_REASON_CRASHED = 3 12 | COREWEBVIEW2_PROCESS_FAILED_REASON_LAUNCH_FAILED = 4 13 | COREWEBVIEW2_PROCESS_FAILED_REASON_OUT_OF_MEMORY = 5 14 | COREWEBVIEW2_PROCESS_FAILED_REASON_PROFILE_DELETED = 6 15 | ) 16 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_PROCESS_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PROCESS_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PROCESS_KIND_BROWSER = 0 9 | COREWEBVIEW2_PROCESS_KIND_RENDERER = 1 10 | COREWEBVIEW2_PROCESS_KIND_UTILITY = 2 11 | COREWEBVIEW2_PROCESS_KIND_SANDBOX_HELPER = 3 12 | COREWEBVIEW2_PROCESS_KIND_GPU = 4 13 | COREWEBVIEW2_PROCESS_KIND_PPAPI_PLUGIN = 5 14 | COREWEBVIEW2_PROCESS_KIND_PPAPI_BROKER = 6 15 | ) 16 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_RELEASE_CHANNELS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_RELEASE_CHANNELS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_RELEASE_CHANNELS_NONE = 0x0 9 | COREWEBVIEW2_RELEASE_CHANNELS_STABLE = 0x1 10 | COREWEBVIEW2_RELEASE_CHANNELS_BETA = 0x2 11 | COREWEBVIEW2_RELEASE_CHANNELS_DEV = 0x4 12 | COREWEBVIEW2_RELEASE_CHANNELS_CANARY = 0x8 13 | ) 14 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_SAVE_AS_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_SAVE_AS_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_SAVE_AS_KIND_DEFAULT = 0 9 | COREWEBVIEW2_SAVE_AS_KIND_HTML_ONLY = 1 10 | COREWEBVIEW2_SAVE_AS_KIND_SINGLE_FILE = 2 11 | COREWEBVIEW2_SAVE_AS_KIND_COMPLETE = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_SAVE_AS_UI_RESULT.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_SAVE_AS_UI_RESULT uint32 6 | 7 | const ( 8 | COREWEBVIEW2_SAVE_AS_UI_RESULT_SUCCESS = 0 9 | COREWEBVIEW2_SAVE_AS_UI_RESULT_INVALID_PATH = 1 10 | COREWEBVIEW2_SAVE_AS_UI_RESULT_FILE_ALREADY_EXISTS = 2 11 | COREWEBVIEW2_SAVE_AS_UI_RESULT_KIND_NOT_SUPPORTED = 3 12 | COREWEBVIEW2_SAVE_AS_UI_RESULT_CANCELLED = 4 13 | ) 14 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_SCRIPT_DIALOG_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_SCRIPT_DIALOG_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_SCRIPT_DIALOG_KIND_ALERT = 0 9 | COREWEBVIEW2_SCRIPT_DIALOG_KIND_CONFIRM = 1 10 | COREWEBVIEW2_SCRIPT_DIALOG_KIND_PROMPT = 2 11 | COREWEBVIEW2_SCRIPT_DIALOG_KIND_BEFOREUNLOAD = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_SCROLLBAR_STYLE.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_SCROLLBAR_STYLE uint32 6 | 7 | const ( 8 | COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT = 0 9 | COREWEBVIEW2_SCROLLBAR_STYLE_FLUENT_OVERLAY = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION uint32 6 | 7 | const ( 8 | COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW = 0 9 | COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_CANCEL = 1 10 | COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_DEFAULT = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_SHARED_BUFFER_ACCESS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_SHARED_BUFFER_ACCESS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY = 0 9 | COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_WRITE = 1 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_TEXT_DIRECTION_KIND.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_TEXT_DIRECTION_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_TEXT_DIRECTION_KIND_DEFAULT = 0 9 | COREWEBVIEW2_TEXT_DIRECTION_KIND_LEFT_TO_RIGHT = 1 10 | COREWEBVIEW2_TEXT_DIRECTION_KIND_RIGHT_TO_LEFT = 2 11 | ) 12 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_TRACKING_PREVENTION_LEVEL.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_TRACKING_PREVENTION_LEVEL uint32 6 | 7 | const ( 8 | COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE = 0 9 | COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC = 1 10 | COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED = 2 11 | COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_STRICT = 3 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_WEB_ERROR_STATUS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_WEB_ERROR_STATUS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN = 0 9 | COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT = 1 10 | COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED = 2 11 | COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS = 3 12 | COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED = 4 13 | COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID = 5 14 | COREWEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE = 6 15 | COREWEBVIEW2_WEB_ERROR_STATUS_TIMEOUT = 7 16 | COREWEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE = 8 17 | COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED = 9 18 | COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET = 10 19 | COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED = 11 20 | COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT = 12 21 | COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED = 13 22 | COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED = 14 23 | COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED = 15 24 | COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR = 16 25 | COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED = 17 26 | COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED = 18 27 | ) 28 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_WEB_RESOURCE_CONTEXT.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_WEB_RESOURCE_CONTEXT uint32 6 | 7 | const ( 8 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL = 0 9 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT = 1 10 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET = 2 11 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE = 3 12 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA = 4 13 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT = 5 14 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT = 6 15 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST = 7 16 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH = 8 17 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK = 9 18 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE = 10 19 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET = 11 20 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST = 12 21 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE = 13 22 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING = 14 23 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT = 15 24 | COREWEBVIEW2_WEB_RESOURCE_CONTEXT_OTHER = 16 25 | ) 26 | -------------------------------------------------------------------------------- /pkg/webview2/COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS uint32 6 | 7 | const ( 8 | COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_NONE = 0x0 9 | COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT = 0x1 10 | COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_SHARED_WORKER = 0x2 11 | COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_SERVICE_WORKER = 0x4 12 | COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_ALL = 0xFFFFFFFF 13 | ) 14 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2BrowserExtensionList.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2BrowserExtensionListVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2BrowserExtensionList struct { 18 | Vtbl *ICoreWebView2BrowserExtensionListVtbl 19 | } 20 | 21 | func (i *ICoreWebView2BrowserExtensionList) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2BrowserExtensionList) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2BrowserExtensionList) GetValueAtIndex(index uint32) (*ICoreWebView2BrowserExtension, error) { 41 | 42 | var value *ICoreWebView2BrowserExtension 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2BrowserProcessExitedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2BrowserProcessExitedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetBrowserProcessExitKind ComProc 14 | GetBrowserProcessId ComProc 15 | } 16 | 17 | type ICoreWebView2BrowserProcessExitedEventArgs struct { 18 | Vtbl *ICoreWebView2BrowserProcessExitedEventArgsVtbl 19 | } 20 | 21 | func (i *ICoreWebView2BrowserProcessExitedEventArgs) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2BrowserProcessExitedEventArgs) GetBrowserProcessExitKind() (COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND, error) { 27 | 28 | var value COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND 29 | 30 | hr, _, _ := i.Vtbl.GetBrowserProcessExitKind.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2BrowserProcessExitedEventArgs) GetBrowserProcessId() (uint32, error) { 41 | 42 | var value uint32 43 | 44 | hr, _, _ := i.Vtbl.GetBrowserProcessId.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&value)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return 0, syscall.Errno(hr) 50 | } 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ClientCertificateCollection.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ClientCertificateCollectionVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2ClientCertificateCollection struct { 18 | Vtbl *ICoreWebView2ClientCertificateCollectionVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ClientCertificateCollection) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ClientCertificateCollection) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2ClientCertificateCollection) GetValueAtIndex(index uint32) (*ICoreWebView2ClientCertificate, error) { 41 | 42 | var value *ICoreWebView2ClientCertificate 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2CompositionController2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2CompositionController2Vtbl struct { 12 | IUnknownVtbl 13 | GetAutomationProvider ComProc 14 | } 15 | 16 | type ICoreWebView2CompositionController2 struct { 17 | Vtbl *ICoreWebView2CompositionController2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2CompositionController2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2CompositionController2() *ICoreWebView2CompositionController2 { 26 | var result *ICoreWebView2CompositionController2 27 | 28 | iidICoreWebView2CompositionController2 := NewGUID("{0b6a3d24-49cb-4806-ba20-b5e0734a7b26}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2CompositionController2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2CompositionController2) GetAutomationProvider() (*IUnknown, error) { 38 | 39 | var value *IUnknown 40 | 41 | hr, _, _ := i.Vtbl.GetAutomationProvider.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return nil, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ContentLoadingEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ContentLoadingEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetIsErrorPage ComProc 14 | GetNavigationId ComProc 15 | } 16 | 17 | type ICoreWebView2ContentLoadingEventArgs struct { 18 | Vtbl *ICoreWebView2ContentLoadingEventArgsVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ContentLoadingEventArgs) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ContentLoadingEventArgs) GetIsErrorPage() (bool, error) { 27 | // Create int32 to hold bool result 28 | var _value int32 29 | 30 | hr, _, _ := i.Vtbl.GetIsErrorPage.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&_value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return false, syscall.Errno(hr) 36 | } 37 | // Get result and cleanup 38 | value := _value != 0 39 | return value, nil 40 | } 41 | 42 | func (i *ICoreWebView2ContentLoadingEventArgs) GetNavigationId() (uint64, error) { 43 | 44 | var value uint64 45 | 46 | hr, _, _ := i.Vtbl.GetNavigationId.Call( 47 | uintptr(unsafe.Pointer(i)), 48 | uintptr(unsafe.Pointer(&value)), 49 | ) 50 | if windows.Handle(hr) != windows.S_OK { 51 | return 0, syscall.Errno(hr) 52 | } 53 | return value, nil 54 | } 55 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Controller2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Controller2Vtbl struct { 12 | IUnknownVtbl 13 | GetDefaultBackgroundColor ComProc 14 | PutDefaultBackgroundColor ComProc 15 | } 16 | 17 | type ICoreWebView2Controller2 struct { 18 | Vtbl *ICoreWebView2Controller2Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Controller2) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Controller2() *ICoreWebView2Controller2 { 27 | var result *ICoreWebView2Controller2 28 | 29 | iidICoreWebView2Controller2 := NewGUID("{c979903e-d4ca-4228-92eb-47ee3fa96eab}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Controller2)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Controller2) GetDefaultBackgroundColor() (COREWEBVIEW2_COLOR, error) { 39 | 40 | var value COREWEBVIEW2_COLOR 41 | 42 | hr, _, _ := i.Vtbl.GetDefaultBackgroundColor.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return COREWEBVIEW2_COLOR{}, syscall.Errno(hr) 48 | } 49 | return value, nil 50 | } 51 | 52 | func (i *ICoreWebView2Controller2) PutDefaultBackgroundColor(value COREWEBVIEW2_COLOR) error { 53 | 54 | hr, _, _ := i.Vtbl.PutDefaultBackgroundColor.Call( 55 | uintptr(unsafe.Pointer(i)), 56 | uintptr(unsafe.Pointer(&value)), 57 | ) 58 | if windows.Handle(hr) != windows.S_OK { 59 | return syscall.Errno(hr) 60 | } 61 | return nil 62 | } 63 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Controller4.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Controller4Vtbl struct { 12 | IUnknownVtbl 13 | GetAllowExternalDrop ComProc 14 | PutAllowExternalDrop ComProc 15 | } 16 | 17 | type ICoreWebView2Controller4 struct { 18 | Vtbl *ICoreWebView2Controller4Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Controller4) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Controller4() *ICoreWebView2Controller4 { 27 | var result *ICoreWebView2Controller4 28 | 29 | iidICoreWebView2Controller4 := NewGUID("{97d418d5-a426-4e49-a151-e1a10f327d9e}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Controller4)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Controller4) GetAllowExternalDrop() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _value int32 41 | 42 | hr, _, _ := i.Vtbl.GetAllowExternalDrop.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | value := _value != 0 51 | return value, nil 52 | } 53 | 54 | func (i *ICoreWebView2Controller4) PutAllowExternalDrop(value bool) error { 55 | 56 | hr, _, _ := i.Vtbl.PutAllowExternalDrop.Call( 57 | uintptr(unsafe.Pointer(i)), 58 | uintptr(unsafe.Pointer(&value)), 59 | ) 60 | if windows.Handle(hr) != windows.S_OK { 61 | return syscall.Errno(hr) 62 | } 63 | return nil 64 | } 65 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2CookieList.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2CookieListVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2CookieList struct { 18 | Vtbl *ICoreWebView2CookieListVtbl 19 | } 20 | 21 | func (i *ICoreWebView2CookieList) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2CookieList) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2CookieList) GetValueAtIndex(index uint32) (*ICoreWebView2Cookie, error) { 41 | 42 | var value *ICoreWebView2Cookie 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2DOMContentLoadedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2DOMContentLoadedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetNavigationId ComProc 14 | } 15 | 16 | type ICoreWebView2DOMContentLoadedEventArgs struct { 17 | Vtbl *ICoreWebView2DOMContentLoadedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2DOMContentLoadedEventArgs) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2DOMContentLoadedEventArgs) GetNavigationId() (uint64, error) { 26 | 27 | var value uint64 28 | 29 | hr, _, _ := i.Vtbl.GetNavigationId.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return 0, syscall.Errno(hr) 35 | } 36 | return value, nil 37 | } 38 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Deferral.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2DeferralVtbl struct { 12 | IUnknownVtbl 13 | Complete ComProc 14 | } 15 | 16 | type ICoreWebView2Deferral struct { 17 | Vtbl *ICoreWebView2DeferralVtbl 18 | } 19 | 20 | func (i *ICoreWebView2Deferral) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2Deferral) Complete() error { 26 | 27 | hr, _, _ := i.Vtbl.Complete.Call( 28 | uintptr(unsafe.Pointer(i)), 29 | ) 30 | if windows.Handle(hr) != windows.S_OK { 31 | return syscall.Errno(hr) 32 | } 33 | return nil 34 | } 35 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2DevToolsProtocolEventReceivedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2DevToolsProtocolEventReceivedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetParameterObjectAsJson ComProc 14 | } 15 | 16 | type ICoreWebView2DevToolsProtocolEventReceivedEventArgs struct { 17 | Vtbl *ICoreWebView2DevToolsProtocolEventReceivedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2DevToolsProtocolEventReceivedEventArgs) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2DevToolsProtocolEventReceivedEventArgs) GetParameterObjectAsJson() (string, error) { 26 | // Create *uint16 to hold result 27 | var _value *uint16 28 | 29 | hr, _, _ := i.Vtbl.GetParameterObjectAsJson.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(_value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return "", syscall.Errno(hr) 35 | } 36 | // Get result and cleanup 37 | value := UTF16PtrToString(_value) 38 | CoTaskMemFree(unsafe.Pointer(_value)) 39 | return value, nil 40 | } 41 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2DevToolsProtocolEventReceivedEventArgs2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2DevToolsProtocolEventReceivedEventArgs2Vtbl struct { 12 | IUnknownVtbl 13 | GetSessionId ComProc 14 | } 15 | 16 | type ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 struct { 17 | Vtbl *ICoreWebView2DevToolsProtocolEventReceivedEventArgs2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2DevToolsProtocolEventReceivedEventArgs2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2DevToolsProtocolEventReceivedEventArgs2() *ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 { 26 | var result *ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 27 | 28 | iidICoreWebView2DevToolsProtocolEventReceivedEventArgs2 := NewGUID("{2dc4959d-1494-4393-95ba-bea4cb9ebd1b}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2DevToolsProtocolEventReceivedEventArgs2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2DevToolsProtocolEventReceivedEventArgs2) GetSessionId() (string, error) { 38 | // Create *uint16 to hold result 39 | var _value *uint16 40 | 41 | hr, _, _ := i.Vtbl.GetSessionId.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(_value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return "", syscall.Errno(hr) 47 | } 48 | // Get result and cleanup 49 | value := UTF16PtrToString(_value) 50 | CoTaskMemFree(unsafe.Pointer(_value)) 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2DevToolsProtocolEventReceiver.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2DevToolsProtocolEventReceiverVtbl struct { 12 | IUnknownVtbl 13 | AddDevToolsProtocolEventReceived ComProc 14 | RemoveDevToolsProtocolEventReceived ComProc 15 | } 16 | 17 | type ICoreWebView2DevToolsProtocolEventReceiver struct { 18 | Vtbl *ICoreWebView2DevToolsProtocolEventReceiverVtbl 19 | } 20 | 21 | func (i *ICoreWebView2DevToolsProtocolEventReceiver) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2DevToolsProtocolEventReceiver) AddDevToolsProtocolEventReceived(eventHandler *ICoreWebView2DevToolsProtocolEventReceivedEventHandler) (EventRegistrationToken, error) { 27 | 28 | var token EventRegistrationToken 29 | 30 | hr, _, _ := i.Vtbl.AddDevToolsProtocolEventReceived.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(eventHandler)), 33 | uintptr(unsafe.Pointer(&token)), 34 | ) 35 | if windows.Handle(hr) != windows.S_OK { 36 | return EventRegistrationToken{}, syscall.Errno(hr) 37 | } 38 | return token, nil 39 | } 40 | 41 | func (i *ICoreWebView2DevToolsProtocolEventReceiver) RemoveDevToolsProtocolEventReceived(token EventRegistrationToken) error { 42 | 43 | hr, _, _ := i.Vtbl.RemoveDevToolsProtocolEventReceived.Call( 44 | uintptr(unsafe.Pointer(i)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return syscall.Errno(hr) 49 | } 50 | return nil 51 | } 52 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment11.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment11Vtbl struct { 12 | IUnknownVtbl 13 | GetFailureReportFolderPath ComProc 14 | } 15 | 16 | type ICoreWebView2Environment11 struct { 17 | Vtbl *ICoreWebView2Environment11Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment11) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment11() *ICoreWebView2Environment11 { 26 | var result *ICoreWebView2Environment11 27 | 28 | iidICoreWebView2Environment11 := NewGUID("{f0913dc6-a0ec-42ef-9805-91dff3a2966a}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment11)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment11) GetFailureReportFolderPath() (string, error) { 38 | // Create *uint16 to hold result 39 | var _value *uint16 40 | 41 | hr, _, _ := i.Vtbl.GetFailureReportFolderPath.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(_value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return "", syscall.Errno(hr) 47 | } 48 | // Get result and cleanup 49 | value := UTF16PtrToString(_value) 50 | CoTaskMemFree(unsafe.Pointer(_value)) 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment12.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment12Vtbl struct { 12 | IUnknownVtbl 13 | CreateSharedBuffer ComProc 14 | } 15 | 16 | type ICoreWebView2Environment12 struct { 17 | Vtbl *ICoreWebView2Environment12Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment12) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment12() *ICoreWebView2Environment12 { 26 | var result *ICoreWebView2Environment12 27 | 28 | iidICoreWebView2Environment12 := NewGUID("{f503db9b-739f-48dd-b151-fdfcf253f54e}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment12)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment12) CreateSharedBuffer(Size uint64) (*ICoreWebView2SharedBuffer, error) { 38 | 39 | var value *ICoreWebView2SharedBuffer 40 | 41 | hr, _, _ := i.Vtbl.CreateSharedBuffer.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&Size)), 44 | uintptr(unsafe.Pointer(&value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return nil, syscall.Errno(hr) 48 | } 49 | return value, nil 50 | } 51 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment13.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment13Vtbl struct { 12 | IUnknownVtbl 13 | GetProcessExtendedInfos ComProc 14 | } 15 | 16 | type ICoreWebView2Environment13 struct { 17 | Vtbl *ICoreWebView2Environment13Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment13) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment13() *ICoreWebView2Environment13 { 26 | var result *ICoreWebView2Environment13 27 | 28 | iidICoreWebView2Environment13 := NewGUID("{af641f58-72b2-11ee-b962-0242ac120002}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment13)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment13) GetProcessExtendedInfos(handler *ICoreWebView2GetProcessExtendedInfosCompletedHandler) error { 38 | 39 | hr, _, _ := i.Vtbl.GetProcessExtendedInfos.Call( 40 | uintptr(unsafe.Pointer(i)), 41 | uintptr(unsafe.Pointer(handler)), 42 | ) 43 | if windows.Handle(hr) != windows.S_OK { 44 | return syscall.Errno(hr) 45 | } 46 | return nil 47 | } 48 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment4.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment4Vtbl struct { 12 | IUnknownVtbl 13 | GetAutomationProviderForWindow ComProc 14 | } 15 | 16 | type ICoreWebView2Environment4 struct { 17 | Vtbl *ICoreWebView2Environment4Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment4) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment4() *ICoreWebView2Environment4 { 26 | var result *ICoreWebView2Environment4 27 | 28 | iidICoreWebView2Environment4 := NewGUID("{20944379-6dcf-41d6-a0a0-abc0fc50de0d}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment4)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment4) GetAutomationProviderForWindow(hwnd HWND) (*IUnknown, error) { 38 | 39 | var value *IUnknown 40 | 41 | hr, _, _ := i.Vtbl.GetAutomationProviderForWindow.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&hwnd)), 44 | uintptr(unsafe.Pointer(&value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return nil, syscall.Errno(hr) 48 | } 49 | return value, nil 50 | } 51 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment6.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment6Vtbl struct { 12 | IUnknownVtbl 13 | CreatePrintSettings ComProc 14 | } 15 | 16 | type ICoreWebView2Environment6 struct { 17 | Vtbl *ICoreWebView2Environment6Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment6) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment6() *ICoreWebView2Environment6 { 26 | var result *ICoreWebView2Environment6 27 | 28 | iidICoreWebView2Environment6 := NewGUID("{e59ee362-acbd-4857-9a8e-d3644d9459a9}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment6)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment6) CreatePrintSettings() (*ICoreWebView2PrintSettings, error) { 38 | 39 | var value *ICoreWebView2PrintSettings 40 | 41 | hr, _, _ := i.Vtbl.CreatePrintSettings.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return nil, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment7.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment7Vtbl struct { 12 | IUnknownVtbl 13 | GetUserDataFolder ComProc 14 | } 15 | 16 | type ICoreWebView2Environment7 struct { 17 | Vtbl *ICoreWebView2Environment7Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment7) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment7() *ICoreWebView2Environment7 { 26 | var result *ICoreWebView2Environment7 27 | 28 | iidICoreWebView2Environment7 := NewGUID("{43c22296-3bbd-43a4-9c00-5c0df6dd29a2}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment7)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment7) GetUserDataFolder() (string, error) { 38 | // Create *uint16 to hold result 39 | var _value *uint16 40 | 41 | hr, _, _ := i.Vtbl.GetUserDataFolder.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(_value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return "", syscall.Errno(hr) 47 | } 48 | // Get result and cleanup 49 | value := UTF16PtrToString(_value) 50 | CoTaskMemFree(unsafe.Pointer(_value)) 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Environment9.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Environment9Vtbl struct { 12 | IUnknownVtbl 13 | CreateContextMenuItem ComProc 14 | } 15 | 16 | type ICoreWebView2Environment9 struct { 17 | Vtbl *ICoreWebView2Environment9Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Environment9) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Environment9() *ICoreWebView2Environment9 { 26 | var result *ICoreWebView2Environment9 27 | 28 | iidICoreWebView2Environment9 := NewGUID("{f06f41bf-4b5a-49d8-b9f6-fa16cd29f274}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Environment9)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Environment9) CreateContextMenuItem(Label string, iconStream *IStream, Kind COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND) (*ICoreWebView2ContextMenuItem, error) { 38 | 39 | // Convert string 'Label' to *uint16 40 | _Label, err := UTF16PtrFromString(Label) 41 | if err != nil { 42 | return nil, err 43 | } 44 | var value *ICoreWebView2ContextMenuItem 45 | 46 | hr, _, _ := i.Vtbl.CreateContextMenuItem.Call( 47 | uintptr(unsafe.Pointer(i)), 48 | uintptr(unsafe.Pointer(_Label)), 49 | uintptr(unsafe.Pointer(iconStream)), 50 | uintptr(Kind), 51 | uintptr(unsafe.Pointer(&value)), 52 | ) 53 | if windows.Handle(hr) != windows.S_OK { 54 | return nil, syscall.Errno(hr) 55 | } 56 | return value, nil 57 | } 58 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2EnvironmentOptions2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2EnvironmentOptions2Vtbl struct { 12 | IUnknownVtbl 13 | GetExclusiveUserDataFolderAccess ComProc 14 | PutExclusiveUserDataFolderAccess ComProc 15 | } 16 | 17 | type ICoreWebView2EnvironmentOptions2 struct { 18 | Vtbl *ICoreWebView2EnvironmentOptions2Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2EnvironmentOptions2) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2EnvironmentOptions2) GetExclusiveUserDataFolderAccess() (bool, error) { 27 | // Create int32 to hold bool result 28 | var _value int32 29 | 30 | hr, _, _ := i.Vtbl.GetExclusiveUserDataFolderAccess.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&_value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return false, syscall.Errno(hr) 36 | } 37 | // Get result and cleanup 38 | value := _value != 0 39 | return value, nil 40 | } 41 | 42 | func (i *ICoreWebView2EnvironmentOptions2) PutExclusiveUserDataFolderAccess(value bool) error { 43 | 44 | hr, _, _ := i.Vtbl.PutExclusiveUserDataFolderAccess.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&value)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return syscall.Errno(hr) 50 | } 51 | return nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2EnvironmentOptions3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2EnvironmentOptions3Vtbl struct { 12 | IUnknownVtbl 13 | GetIsCustomCrashReportingEnabled ComProc 14 | PutIsCustomCrashReportingEnabled ComProc 15 | } 16 | 17 | type ICoreWebView2EnvironmentOptions3 struct { 18 | Vtbl *ICoreWebView2EnvironmentOptions3Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2EnvironmentOptions3) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2EnvironmentOptions3) GetIsCustomCrashReportingEnabled() (bool, error) { 27 | // Create int32 to hold bool result 28 | var _value int32 29 | 30 | hr, _, _ := i.Vtbl.GetIsCustomCrashReportingEnabled.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&_value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return false, syscall.Errno(hr) 36 | } 37 | // Get result and cleanup 38 | value := _value != 0 39 | return value, nil 40 | } 41 | 42 | func (i *ICoreWebView2EnvironmentOptions3) PutIsCustomCrashReportingEnabled(value bool) error { 43 | 44 | hr, _, _ := i.Vtbl.PutIsCustomCrashReportingEnabled.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&value)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return syscall.Errno(hr) 50 | } 51 | return nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2EnvironmentOptions4.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2EnvironmentOptions4Vtbl struct { 12 | IUnknownVtbl 13 | GetCustomSchemeRegistrations ComProc 14 | SetCustomSchemeRegistrations ComProc 15 | } 16 | 17 | type ICoreWebView2EnvironmentOptions4 struct { 18 | Vtbl *ICoreWebView2EnvironmentOptions4Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2EnvironmentOptions4) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2EnvironmentOptions4) GetCustomSchemeRegistrations() (uint32, ICoreWebView2CustomSchemeRegistration, error) { 27 | 28 | var count uint32 29 | var schemeRegistrations ICoreWebView2CustomSchemeRegistration 30 | 31 | hr, _, _ := i.Vtbl.GetCustomSchemeRegistrations.Call( 32 | uintptr(unsafe.Pointer(i)), 33 | uintptr(unsafe.Pointer(&count)), 34 | uintptr(unsafe.Pointer(&schemeRegistrations)), 35 | ) 36 | if windows.Handle(hr) != windows.S_OK { 37 | return 0, ICoreWebView2CustomSchemeRegistration{}, syscall.Errno(hr) 38 | } 39 | return count, schemeRegistrations, nil 40 | } 41 | 42 | func (i *ICoreWebView2EnvironmentOptions4) SetCustomSchemeRegistrations(count uint32, schemeRegistrations **ICoreWebView2CustomSchemeRegistration) error { 43 | 44 | hr, _, _ := i.Vtbl.SetCustomSchemeRegistrations.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&count)), 47 | uintptr(unsafe.Pointer(&schemeRegistrations)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return syscall.Errno(hr) 51 | } 52 | return nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2EnvironmentOptions5.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2EnvironmentOptions5Vtbl struct { 12 | IUnknownVtbl 13 | GetEnableTrackingPrevention ComProc 14 | PutEnableTrackingPrevention ComProc 15 | } 16 | 17 | type ICoreWebView2EnvironmentOptions5 struct { 18 | Vtbl *ICoreWebView2EnvironmentOptions5Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2EnvironmentOptions5) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2EnvironmentOptions5) GetEnableTrackingPrevention() (bool, error) { 27 | // Create int32 to hold bool result 28 | var _value int32 29 | 30 | hr, _, _ := i.Vtbl.GetEnableTrackingPrevention.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&_value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return false, syscall.Errno(hr) 36 | } 37 | // Get result and cleanup 38 | value := _value != 0 39 | return value, nil 40 | } 41 | 42 | func (i *ICoreWebView2EnvironmentOptions5) PutEnableTrackingPrevention(value bool) error { 43 | 44 | hr, _, _ := i.Vtbl.PutEnableTrackingPrevention.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&value)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return syscall.Errno(hr) 50 | } 51 | return nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2EnvironmentOptions6.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2EnvironmentOptions6Vtbl struct { 12 | IUnknownVtbl 13 | GetAreBrowserExtensionsEnabled ComProc 14 | PutAreBrowserExtensionsEnabled ComProc 15 | } 16 | 17 | type ICoreWebView2EnvironmentOptions6 struct { 18 | Vtbl *ICoreWebView2EnvironmentOptions6Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2EnvironmentOptions6) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2EnvironmentOptions6) GetAreBrowserExtensionsEnabled() (bool, error) { 27 | // Create int32 to hold bool result 28 | var _value int32 29 | 30 | hr, _, _ := i.Vtbl.GetAreBrowserExtensionsEnabled.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&_value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return false, syscall.Errno(hr) 36 | } 37 | // Get result and cleanup 38 | value := _value != 0 39 | return value, nil 40 | } 41 | 42 | func (i *ICoreWebView2EnvironmentOptions6) PutAreBrowserExtensionsEnabled(value bool) error { 43 | 44 | hr, _, _ := i.Vtbl.PutAreBrowserExtensionsEnabled.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&value)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return syscall.Errno(hr) 50 | } 51 | return nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2EnvironmentOptions8.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2EnvironmentOptions8Vtbl struct { 12 | IUnknownVtbl 13 | GetScrollBarStyle ComProc 14 | PutScrollBarStyle ComProc 15 | } 16 | 17 | type ICoreWebView2EnvironmentOptions8 struct { 18 | Vtbl *ICoreWebView2EnvironmentOptions8Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2EnvironmentOptions8) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2EnvironmentOptions8) GetScrollBarStyle() (COREWEBVIEW2_SCROLLBAR_STYLE, error) { 27 | 28 | var value COREWEBVIEW2_SCROLLBAR_STYLE 29 | 30 | hr, _, _ := i.Vtbl.GetScrollBarStyle.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2EnvironmentOptions8) PutScrollBarStyle(value COREWEBVIEW2_SCROLLBAR_STYLE) error { 41 | 42 | hr, _, _ := i.Vtbl.PutScrollBarStyle.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(value), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return syscall.Errno(hr) 48 | } 49 | return nil 50 | } 51 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2File.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2FileVtbl struct { 12 | IUnknownVtbl 13 | GetPath ComProc 14 | } 15 | 16 | type ICoreWebView2File struct { 17 | Vtbl *ICoreWebView2FileVtbl 18 | } 19 | 20 | func (i *ICoreWebView2File) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2File) GetPath() (string, error) { 26 | // Create *uint16 to hold result 27 | var _value *uint16 28 | 29 | hr, _, _ := i.Vtbl.GetPath.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(_value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return "", syscall.Errno(hr) 35 | } 36 | // Get result and cleanup 37 | value := UTF16PtrToString(_value) 38 | CoTaskMemFree(unsafe.Pointer(_value)) 39 | return value, nil 40 | } 41 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Frame3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Frame3Vtbl struct { 12 | IUnknownVtbl 13 | AddPermissionRequested ComProc 14 | RemovePermissionRequested ComProc 15 | } 16 | 17 | type ICoreWebView2Frame3 struct { 18 | Vtbl *ICoreWebView2Frame3Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Frame3) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Frame3() *ICoreWebView2Frame3 { 27 | var result *ICoreWebView2Frame3 28 | 29 | iidICoreWebView2Frame3 := NewGUID("{b50d82cc-cc28-481d-9614-cb048895e6a0}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Frame3)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Frame3) AddPermissionRequested(eventHandler *ICoreWebView2FramePermissionRequestedEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddPermissionRequested.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2Frame3) RemovePermissionRequested(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemovePermissionRequested.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Frame4.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Frame4Vtbl struct { 12 | IUnknownVtbl 13 | PostSharedBufferToScript ComProc 14 | } 15 | 16 | type ICoreWebView2Frame4 struct { 17 | Vtbl *ICoreWebView2Frame4Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Frame4) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Frame4() *ICoreWebView2Frame4 { 26 | var result *ICoreWebView2Frame4 27 | 28 | iidICoreWebView2Frame4 := NewGUID("{188782dc-92aa-4732-ab3c-fcc59f6f68b9}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Frame4)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Frame4) PostSharedBufferToScript(sharedBuffer *ICoreWebView2SharedBuffer, access COREWEBVIEW2_SHARED_BUFFER_ACCESS, additionalDataAsJson string) error { 38 | 39 | // Convert string 'additionalDataAsJson' to *uint16 40 | _additionalDataAsJson, err := UTF16PtrFromString(additionalDataAsJson) 41 | if err != nil { 42 | return err 43 | } 44 | 45 | hr, _, _ := i.Vtbl.PostSharedBufferToScript.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(sharedBuffer)), 48 | uintptr(access), 49 | uintptr(unsafe.Pointer(_additionalDataAsJson)), 50 | ) 51 | if windows.Handle(hr) != windows.S_OK { 52 | return syscall.Errno(hr) 53 | } 54 | return nil 55 | } 56 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Frame5.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Frame5Vtbl struct { 12 | IUnknownVtbl 13 | GetFrameId ComProc 14 | } 15 | 16 | type ICoreWebView2Frame5 struct { 17 | Vtbl *ICoreWebView2Frame5Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Frame5) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Frame5() *ICoreWebView2Frame5 { 26 | var result *ICoreWebView2Frame5 27 | 28 | iidICoreWebView2Frame5 := NewGUID("{99d199c4-7305-11ee-b962-0242ac120002}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Frame5)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Frame5) GetFrameId() (uint32, error) { 38 | 39 | var value uint32 40 | 41 | hr, _, _ := i.Vtbl.GetFrameId.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return 0, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Frame6.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Frame6Vtbl struct { 12 | IUnknownVtbl 13 | AddScreenCaptureStarting ComProc 14 | RemoveScreenCaptureStarting ComProc 15 | } 16 | 17 | type ICoreWebView2Frame6 struct { 18 | Vtbl *ICoreWebView2Frame6Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Frame6) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Frame6() *ICoreWebView2Frame6 { 27 | var result *ICoreWebView2Frame6 28 | 29 | iidICoreWebView2Frame6 := NewGUID("{0de611fd-31e9-5ddc-9d71-95eda26eff32}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Frame6)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Frame6) AddScreenCaptureStarting(eventHandler *ICoreWebView2FrameScreenCaptureStartingEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddScreenCaptureStarting.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2Frame6) RemoveScreenCaptureStarting(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemoveScreenCaptureStarting.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2FrameCreatedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2FrameCreatedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetFrame ComProc 14 | } 15 | 16 | type ICoreWebView2FrameCreatedEventArgs struct { 17 | Vtbl *ICoreWebView2FrameCreatedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2FrameCreatedEventArgs) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2FrameCreatedEventArgs) GetFrame() (*ICoreWebView2Frame, error) { 26 | 27 | var value *ICoreWebView2Frame 28 | 29 | hr, _, _ := i.Vtbl.GetFrame.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return nil, syscall.Errno(hr) 35 | } 36 | return value, nil 37 | } 38 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2FrameInfo.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2FrameInfoVtbl struct { 12 | IUnknownVtbl 13 | GetName ComProc 14 | GetSource ComProc 15 | } 16 | 17 | type ICoreWebView2FrameInfo struct { 18 | Vtbl *ICoreWebView2FrameInfoVtbl 19 | } 20 | 21 | func (i *ICoreWebView2FrameInfo) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2FrameInfo) GetName() (string, error) { 27 | // Create *uint16 to hold result 28 | var _value *uint16 29 | 30 | hr, _, _ := i.Vtbl.GetName.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(_value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return "", syscall.Errno(hr) 36 | } 37 | // Get result and cleanup 38 | value := UTF16PtrToString(_value) 39 | CoTaskMemFree(unsafe.Pointer(_value)) 40 | return value, nil 41 | } 42 | 43 | func (i *ICoreWebView2FrameInfo) GetSource() (string, error) { 44 | // Create *uint16 to hold result 45 | var _value *uint16 46 | 47 | hr, _, _ := i.Vtbl.GetSource.Call( 48 | uintptr(unsafe.Pointer(i)), 49 | uintptr(unsafe.Pointer(_value)), 50 | ) 51 | if windows.Handle(hr) != windows.S_OK { 52 | return "", syscall.Errno(hr) 53 | } 54 | // Get result and cleanup 55 | value := UTF16PtrToString(_value) 56 | CoTaskMemFree(unsafe.Pointer(_value)) 57 | return value, nil 58 | } 59 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2FrameInfoCollection.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2FrameInfoCollectionVtbl struct { 12 | IUnknownVtbl 13 | GetIterator ComProc 14 | } 15 | 16 | type ICoreWebView2FrameInfoCollection struct { 17 | Vtbl *ICoreWebView2FrameInfoCollectionVtbl 18 | } 19 | 20 | func (i *ICoreWebView2FrameInfoCollection) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2FrameInfoCollection) GetIterator() (*ICoreWebView2FrameInfoCollectionIterator, error) { 26 | 27 | var value *ICoreWebView2FrameInfoCollectionIterator 28 | 29 | hr, _, _ := i.Vtbl.GetIterator.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return nil, syscall.Errno(hr) 35 | } 36 | return value, nil 37 | } 38 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2MoveFocusRequestedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2MoveFocusRequestedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetReason ComProc 14 | GetHandled ComProc 15 | PutHandled ComProc 16 | } 17 | 18 | type ICoreWebView2MoveFocusRequestedEventArgs struct { 19 | Vtbl *ICoreWebView2MoveFocusRequestedEventArgsVtbl 20 | } 21 | 22 | func (i *ICoreWebView2MoveFocusRequestedEventArgs) AddRef() uintptr { 23 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 24 | return refCounter 25 | } 26 | 27 | func (i *ICoreWebView2MoveFocusRequestedEventArgs) GetReason() (COREWEBVIEW2_MOVE_FOCUS_REASON, error) { 28 | 29 | var reason COREWEBVIEW2_MOVE_FOCUS_REASON 30 | 31 | hr, _, _ := i.Vtbl.GetReason.Call( 32 | uintptr(unsafe.Pointer(i)), 33 | uintptr(unsafe.Pointer(&reason)), 34 | ) 35 | if windows.Handle(hr) != windows.S_OK { 36 | return 0, syscall.Errno(hr) 37 | } 38 | return reason, nil 39 | } 40 | 41 | func (i *ICoreWebView2MoveFocusRequestedEventArgs) GetHandled() (bool, error) { 42 | // Create int32 to hold bool result 43 | var _value int32 44 | 45 | hr, _, _ := i.Vtbl.GetHandled.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(&_value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return false, syscall.Errno(hr) 51 | } 52 | // Get result and cleanup 53 | value := _value != 0 54 | return value, nil 55 | } 56 | 57 | func (i *ICoreWebView2MoveFocusRequestedEventArgs) PutHandled(value bool) error { 58 | 59 | hr, _, _ := i.Vtbl.PutHandled.Call( 60 | uintptr(unsafe.Pointer(i)), 61 | uintptr(unsafe.Pointer(&value)), 62 | ) 63 | if windows.Handle(hr) != windows.S_OK { 64 | return syscall.Errno(hr) 65 | } 66 | return nil 67 | } 68 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2NavigationCompletedEventArgs2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2NavigationCompletedEventArgs2Vtbl struct { 12 | IUnknownVtbl 13 | GetHttpStatusCode ComProc 14 | } 15 | 16 | type ICoreWebView2NavigationCompletedEventArgs2 struct { 17 | Vtbl *ICoreWebView2NavigationCompletedEventArgs2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2NavigationCompletedEventArgs2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2NavigationCompletedEventArgs2() *ICoreWebView2NavigationCompletedEventArgs2 { 26 | var result *ICoreWebView2NavigationCompletedEventArgs2 27 | 28 | iidICoreWebView2NavigationCompletedEventArgs2 := NewGUID("{fdf8b738-ee1e-4db2-a329-8d7d7b74d792}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2NavigationCompletedEventArgs2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2NavigationCompletedEventArgs2) GetHttpStatusCode() (int, error) { 38 | 39 | var value int 40 | 41 | hr, _, _ := i.Vtbl.GetHttpStatusCode.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(value), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return 0, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2NavigationStartingEventArgs3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2NavigationStartingEventArgs3Vtbl struct { 12 | IUnknownVtbl 13 | GetNavigationKind ComProc 14 | } 15 | 16 | type ICoreWebView2NavigationStartingEventArgs3 struct { 17 | Vtbl *ICoreWebView2NavigationStartingEventArgs3Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2NavigationStartingEventArgs3) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2NavigationStartingEventArgs3() *ICoreWebView2NavigationStartingEventArgs3 { 26 | var result *ICoreWebView2NavigationStartingEventArgs3 27 | 28 | iidICoreWebView2NavigationStartingEventArgs3 := NewGUID("{ddffe494-4942-4bd2-ab73-35b8ff40e19f}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2NavigationStartingEventArgs3)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2NavigationStartingEventArgs3) GetNavigationKind() (COREWEBVIEW2_NAVIGATION_KIND, error) { 38 | 39 | var value COREWEBVIEW2_NAVIGATION_KIND 40 | 41 | hr, _, _ := i.Vtbl.GetNavigationKind.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return 0, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2NewWindowRequestedEventArgs2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2NewWindowRequestedEventArgs2Vtbl struct { 12 | IUnknownVtbl 13 | GetName ComProc 14 | } 15 | 16 | type ICoreWebView2NewWindowRequestedEventArgs2 struct { 17 | Vtbl *ICoreWebView2NewWindowRequestedEventArgs2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2NewWindowRequestedEventArgs2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2NewWindowRequestedEventArgs2() *ICoreWebView2NewWindowRequestedEventArgs2 { 26 | var result *ICoreWebView2NewWindowRequestedEventArgs2 27 | 28 | iidICoreWebView2NewWindowRequestedEventArgs2 := NewGUID("{bbc7baed-74c6-4c92-b63a-7f5aeae03de3}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2NewWindowRequestedEventArgs2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2NewWindowRequestedEventArgs2) GetName() (string, error) { 38 | // Create *uint16 to hold result 39 | var _value *uint16 40 | 41 | hr, _, _ := i.Vtbl.GetName.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(_value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return "", syscall.Errno(hr) 47 | } 48 | // Get result and cleanup 49 | value := UTF16PtrToString(_value) 50 | CoTaskMemFree(unsafe.Pointer(_value)) 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2NewWindowRequestedEventArgs3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2NewWindowRequestedEventArgs3Vtbl struct { 12 | IUnknownVtbl 13 | GetOriginalSourceFrameInfo ComProc 14 | } 15 | 16 | type ICoreWebView2NewWindowRequestedEventArgs3 struct { 17 | Vtbl *ICoreWebView2NewWindowRequestedEventArgs3Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2NewWindowRequestedEventArgs3) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2NewWindowRequestedEventArgs3() *ICoreWebView2NewWindowRequestedEventArgs3 { 26 | var result *ICoreWebView2NewWindowRequestedEventArgs3 27 | 28 | iidICoreWebView2NewWindowRequestedEventArgs3 := NewGUID("{842bed3c-6ad6-4dd9-b938-28c96667ad66}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2NewWindowRequestedEventArgs3)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2NewWindowRequestedEventArgs3) GetOriginalSourceFrameInfo() (*ICoreWebView2FrameInfo, error) { 38 | 39 | var value *ICoreWebView2FrameInfo 40 | 41 | hr, _, _ := i.Vtbl.GetOriginalSourceFrameInfo.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return nil, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2NonClientRegionChangedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2NonClientRegionChangedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetRegionKind ComProc 14 | } 15 | 16 | type ICoreWebView2NonClientRegionChangedEventArgs struct { 17 | Vtbl *ICoreWebView2NonClientRegionChangedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2NonClientRegionChangedEventArgs) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2NonClientRegionChangedEventArgs) GetRegionKind() (COREWEBVIEW2_NON_CLIENT_REGION_KIND, error) { 26 | 27 | var value COREWEBVIEW2_NON_CLIENT_REGION_KIND 28 | 29 | hr, _, _ := i.Vtbl.GetRegionKind.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return 0, syscall.Errno(hr) 35 | } 36 | return value, nil 37 | } 38 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ObjectCollection.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ObjectCollectionVtbl struct { 12 | IUnknownVtbl 13 | RemoveValueAtIndex ComProc 14 | InsertValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2ObjectCollection struct { 18 | Vtbl *ICoreWebView2ObjectCollectionVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ObjectCollection) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2ObjectCollection() *ICoreWebView2ObjectCollection { 27 | var result *ICoreWebView2ObjectCollection 28 | 29 | iidICoreWebView2ObjectCollection := NewGUID("{5cfec11c-25bd-4e8d-9e1a-7acdaeeec047}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2ObjectCollection)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2ObjectCollection) RemoveValueAtIndex(index uint32) error { 39 | 40 | hr, _, _ := i.Vtbl.RemoveValueAtIndex.Call( 41 | uintptr(unsafe.Pointer(i)), 42 | uintptr(unsafe.Pointer(&index)), 43 | ) 44 | if windows.Handle(hr) != windows.S_OK { 45 | return syscall.Errno(hr) 46 | } 47 | return nil 48 | } 49 | 50 | func (i *ICoreWebView2ObjectCollection) InsertValueAtIndex(index uint32, value *IUnknown) error { 51 | 52 | hr, _, _ := i.Vtbl.InsertValueAtIndex.Call( 53 | uintptr(unsafe.Pointer(i)), 54 | uintptr(unsafe.Pointer(&index)), 55 | uintptr(unsafe.Pointer(value)), 56 | ) 57 | if windows.Handle(hr) != windows.S_OK { 58 | return syscall.Errno(hr) 59 | } 60 | return nil 61 | } 62 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ObjectCollectionView.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ObjectCollectionViewVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2ObjectCollectionView struct { 18 | Vtbl *ICoreWebView2ObjectCollectionViewVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ObjectCollectionView) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ObjectCollectionView) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2ObjectCollectionView) GetValueAtIndex(index uint32) (*IUnknown, error) { 41 | 42 | var value *IUnknown 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2PermissionSettingCollectionView.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2PermissionSettingCollectionViewVtbl struct { 12 | IUnknownVtbl 13 | GetValueAtIndex ComProc 14 | GetCount ComProc 15 | } 16 | 17 | type ICoreWebView2PermissionSettingCollectionView struct { 18 | Vtbl *ICoreWebView2PermissionSettingCollectionViewVtbl 19 | } 20 | 21 | func (i *ICoreWebView2PermissionSettingCollectionView) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2PermissionSettingCollectionView) GetValueAtIndex(index uint32) (*ICoreWebView2PermissionSetting, error) { 27 | 28 | var permissionSetting *ICoreWebView2PermissionSetting 29 | 30 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&index)), 33 | uintptr(unsafe.Pointer(&permissionSetting)), 34 | ) 35 | if windows.Handle(hr) != windows.S_OK { 36 | return nil, syscall.Errno(hr) 37 | } 38 | return permissionSetting, nil 39 | } 40 | 41 | func (i *ICoreWebView2PermissionSettingCollectionView) GetCount() (uint32, error) { 42 | 43 | var value uint32 44 | 45 | hr, _, _ := i.Vtbl.GetCount.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return 0, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ProcessExtendedInfo.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ProcessExtendedInfoVtbl struct { 12 | IUnknownVtbl 13 | GetProcessInfo ComProc 14 | GetAssociatedFrameInfos ComProc 15 | } 16 | 17 | type ICoreWebView2ProcessExtendedInfo struct { 18 | Vtbl *ICoreWebView2ProcessExtendedInfoVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ProcessExtendedInfo) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ProcessExtendedInfo) GetProcessInfo() (*ICoreWebView2ProcessInfo, error) { 27 | 28 | var processInfo *ICoreWebView2ProcessInfo 29 | 30 | hr, _, _ := i.Vtbl.GetProcessInfo.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&processInfo)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return nil, syscall.Errno(hr) 36 | } 37 | return processInfo, nil 38 | } 39 | 40 | func (i *ICoreWebView2ProcessExtendedInfo) GetAssociatedFrameInfos() (*ICoreWebView2FrameInfoCollection, error) { 41 | 42 | var frames *ICoreWebView2FrameInfoCollection 43 | 44 | hr, _, _ := i.Vtbl.GetAssociatedFrameInfos.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&frames)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return nil, syscall.Errno(hr) 50 | } 51 | return frames, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ProcessExtendedInfoCollection.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ProcessExtendedInfoCollectionVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2ProcessExtendedInfoCollection struct { 18 | Vtbl *ICoreWebView2ProcessExtendedInfoCollectionVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ProcessExtendedInfoCollection) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ProcessExtendedInfoCollection) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2ProcessExtendedInfoCollection) GetValueAtIndex(index uint32) (*ICoreWebView2ProcessExtendedInfo, error) { 41 | 42 | var value *ICoreWebView2ProcessExtendedInfo 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ProcessFailedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ProcessFailedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetProcessFailedKind ComProc 14 | } 15 | 16 | type ICoreWebView2ProcessFailedEventArgs struct { 17 | Vtbl *ICoreWebView2ProcessFailedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2ProcessFailedEventArgs) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2ProcessFailedEventArgs) GetProcessFailedKind() (COREWEBVIEW2_PROCESS_FAILED_KIND, error) { 26 | 27 | var value COREWEBVIEW2_PROCESS_FAILED_KIND 28 | 29 | hr, _, _ := i.Vtbl.GetProcessFailedKind.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return 0, syscall.Errno(hr) 35 | } 36 | return value, nil 37 | } 38 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ProcessFailedEventArgs3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ProcessFailedEventArgs3Vtbl struct { 12 | IUnknownVtbl 13 | GetFailureSourceModulePath ComProc 14 | } 15 | 16 | type ICoreWebView2ProcessFailedEventArgs3 struct { 17 | Vtbl *ICoreWebView2ProcessFailedEventArgs3Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2ProcessFailedEventArgs3) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2ProcessFailedEventArgs3() *ICoreWebView2ProcessFailedEventArgs3 { 26 | var result *ICoreWebView2ProcessFailedEventArgs3 27 | 28 | iidICoreWebView2ProcessFailedEventArgs3 := NewGUID("{ab667428-094d-5fd1-b480-8b4c0fdbdf2f}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2ProcessFailedEventArgs3)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2ProcessFailedEventArgs3) GetFailureSourceModulePath() (string, error) { 38 | // Create *uint16 to hold result 39 | var _value *uint16 40 | 41 | hr, _, _ := i.Vtbl.GetFailureSourceModulePath.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(_value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return "", syscall.Errno(hr) 47 | } 48 | // Get result and cleanup 49 | value := UTF16PtrToString(_value) 50 | CoTaskMemFree(unsafe.Pointer(_value)) 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ProcessInfo.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ProcessInfoVtbl struct { 12 | IUnknownVtbl 13 | GetProcessId ComProc 14 | GetKind ComProc 15 | } 16 | 17 | type ICoreWebView2ProcessInfo struct { 18 | Vtbl *ICoreWebView2ProcessInfoVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ProcessInfo) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ProcessInfo) GetProcessId() (int32, error) { 27 | 28 | var value int32 29 | 30 | hr, _, _ := i.Vtbl.GetProcessId.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2ProcessInfo) GetKind() (COREWEBVIEW2_PROCESS_KIND, error) { 41 | 42 | var kind COREWEBVIEW2_PROCESS_KIND 43 | 44 | hr, _, _ := i.Vtbl.GetKind.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&kind)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return 0, syscall.Errno(hr) 50 | } 51 | return kind, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2ProcessInfoCollection.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2ProcessInfoCollectionVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2ProcessInfoCollection struct { 18 | Vtbl *ICoreWebView2ProcessInfoCollectionVtbl 19 | } 20 | 21 | func (i *ICoreWebView2ProcessInfoCollection) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2ProcessInfoCollection) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2ProcessInfoCollection) GetValueAtIndex(index uint32) (*ICoreWebView2ProcessInfo, error) { 41 | 42 | var value *ICoreWebView2ProcessInfo 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Profile3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Profile3Vtbl struct { 12 | IUnknownVtbl 13 | GetPreferredTrackingPreventionLevel ComProc 14 | PutPreferredTrackingPreventionLevel ComProc 15 | } 16 | 17 | type ICoreWebView2Profile3 struct { 18 | Vtbl *ICoreWebView2Profile3Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Profile3) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Profile3() *ICoreWebView2Profile3 { 27 | var result *ICoreWebView2Profile3 28 | 29 | iidICoreWebView2Profile3 := NewGUID("{b188e659-5685-4e05-bdba-fc640e0f1992}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Profile3)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Profile3) GetPreferredTrackingPreventionLevel() (COREWEBVIEW2_TRACKING_PREVENTION_LEVEL, error) { 39 | 40 | var value COREWEBVIEW2_TRACKING_PREVENTION_LEVEL 41 | 42 | hr, _, _ := i.Vtbl.GetPreferredTrackingPreventionLevel.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return 0, syscall.Errno(hr) 48 | } 49 | return value, nil 50 | } 51 | 52 | func (i *ICoreWebView2Profile3) PutPreferredTrackingPreventionLevel(value COREWEBVIEW2_TRACKING_PREVENTION_LEVEL) error { 53 | 54 | hr, _, _ := i.Vtbl.PutPreferredTrackingPreventionLevel.Call( 55 | uintptr(unsafe.Pointer(i)), 56 | uintptr(value), 57 | ) 58 | if windows.Handle(hr) != windows.S_OK { 59 | return syscall.Errno(hr) 60 | } 61 | return nil 62 | } 63 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Profile5.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Profile5Vtbl struct { 12 | IUnknownVtbl 13 | GetCookieManager ComProc 14 | } 15 | 16 | type ICoreWebView2Profile5 struct { 17 | Vtbl *ICoreWebView2Profile5Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2Profile5) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2Profile5() *ICoreWebView2Profile5 { 26 | var result *ICoreWebView2Profile5 27 | 28 | iidICoreWebView2Profile5 := NewGUID("{2ee5b76e-6e80-4df2-bcd3-d4ec3340a01b}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2Profile5)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2Profile5) GetCookieManager() (*ICoreWebView2CookieManager, error) { 38 | 39 | var value *ICoreWebView2CookieManager 40 | 41 | hr, _, _ := i.Vtbl.GetCookieManager.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return nil, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2RegionRectCollectionView.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2RegionRectCollectionViewVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2RegionRectCollectionView struct { 18 | Vtbl *ICoreWebView2RegionRectCollectionViewVtbl 19 | } 20 | 21 | func (i *ICoreWebView2RegionRectCollectionView) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2RegionRectCollectionView) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2RegionRectCollectionView) GetValueAtIndex(index uint32) (RECT, error) { 41 | 42 | var value RECT 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(&value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return RECT{}, syscall.Errno(hr) 51 | } 52 | return value, nil 53 | } 54 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Settings3.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Settings3Vtbl struct { 12 | IUnknownVtbl 13 | GetAreBrowserAcceleratorKeysEnabled ComProc 14 | PutAreBrowserAcceleratorKeysEnabled ComProc 15 | } 16 | 17 | type ICoreWebView2Settings3 struct { 18 | Vtbl *ICoreWebView2Settings3Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Settings3) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Settings3() *ICoreWebView2Settings3 { 27 | var result *ICoreWebView2Settings3 28 | 29 | iidICoreWebView2Settings3 := NewGUID("{fdb5ab74-af33-4854-84f0-0a631deb5eba}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Settings3)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Settings3) GetAreBrowserAcceleratorKeysEnabled() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _value int32 41 | 42 | hr, _, _ := i.Vtbl.GetAreBrowserAcceleratorKeysEnabled.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | value := _value != 0 51 | return value, nil 52 | } 53 | 54 | func (i *ICoreWebView2Settings3) PutAreBrowserAcceleratorKeysEnabled(value bool) error { 55 | 56 | hr, _, _ := i.Vtbl.PutAreBrowserAcceleratorKeysEnabled.Call( 57 | uintptr(unsafe.Pointer(i)), 58 | uintptr(unsafe.Pointer(&value)), 59 | ) 60 | if windows.Handle(hr) != windows.S_OK { 61 | return syscall.Errno(hr) 62 | } 63 | return nil 64 | } 65 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Settings5.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Settings5Vtbl struct { 12 | IUnknownVtbl 13 | GetIsPinchZoomEnabled ComProc 14 | PutIsPinchZoomEnabled ComProc 15 | } 16 | 17 | type ICoreWebView2Settings5 struct { 18 | Vtbl *ICoreWebView2Settings5Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Settings5) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Settings5() *ICoreWebView2Settings5 { 27 | var result *ICoreWebView2Settings5 28 | 29 | iidICoreWebView2Settings5 := NewGUID("{183e7052-1d03-43a0-ab99-98e043b66b39}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Settings5)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Settings5) GetIsPinchZoomEnabled() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _value int32 41 | 42 | hr, _, _ := i.Vtbl.GetIsPinchZoomEnabled.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | value := _value != 0 51 | return value, nil 52 | } 53 | 54 | func (i *ICoreWebView2Settings5) PutIsPinchZoomEnabled(value bool) error { 55 | 56 | hr, _, _ := i.Vtbl.PutIsPinchZoomEnabled.Call( 57 | uintptr(unsafe.Pointer(i)), 58 | uintptr(unsafe.Pointer(&value)), 59 | ) 60 | if windows.Handle(hr) != windows.S_OK { 61 | return syscall.Errno(hr) 62 | } 63 | return nil 64 | } 65 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Settings6.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Settings6Vtbl struct { 12 | IUnknownVtbl 13 | GetIsSwipeNavigationEnabled ComProc 14 | PutIsSwipeNavigationEnabled ComProc 15 | } 16 | 17 | type ICoreWebView2Settings6 struct { 18 | Vtbl *ICoreWebView2Settings6Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Settings6) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Settings6() *ICoreWebView2Settings6 { 27 | var result *ICoreWebView2Settings6 28 | 29 | iidICoreWebView2Settings6 := NewGUID("{11cb3acd-9bc8-43b8-83bf-f40753714f87}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Settings6)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Settings6) GetIsSwipeNavigationEnabled() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _value int32 41 | 42 | hr, _, _ := i.Vtbl.GetIsSwipeNavigationEnabled.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | value := _value != 0 51 | return value, nil 52 | } 53 | 54 | func (i *ICoreWebView2Settings6) PutIsSwipeNavigationEnabled(value bool) error { 55 | 56 | hr, _, _ := i.Vtbl.PutIsSwipeNavigationEnabled.Call( 57 | uintptr(unsafe.Pointer(i)), 58 | uintptr(unsafe.Pointer(&value)), 59 | ) 60 | if windows.Handle(hr) != windows.S_OK { 61 | return syscall.Errno(hr) 62 | } 63 | return nil 64 | } 65 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Settings7.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Settings7Vtbl struct { 12 | IUnknownVtbl 13 | GetHiddenPdfToolbarItems ComProc 14 | PutHiddenPdfToolbarItems ComProc 15 | } 16 | 17 | type ICoreWebView2Settings7 struct { 18 | Vtbl *ICoreWebView2Settings7Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Settings7) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Settings7() *ICoreWebView2Settings7 { 27 | var result *ICoreWebView2Settings7 28 | 29 | iidICoreWebView2Settings7 := NewGUID("{488dc902-35ef-42d2-bc7d-94b65c4bc49c}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Settings7)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Settings7) GetHiddenPdfToolbarItems() (COREWEBVIEW2_PDF_TOOLBAR_ITEMS, error) { 39 | 40 | var value COREWEBVIEW2_PDF_TOOLBAR_ITEMS 41 | 42 | hr, _, _ := i.Vtbl.GetHiddenPdfToolbarItems.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return 0, syscall.Errno(hr) 48 | } 49 | return value, nil 50 | } 51 | 52 | func (i *ICoreWebView2Settings7) PutHiddenPdfToolbarItems(value COREWEBVIEW2_PDF_TOOLBAR_ITEMS) error { 53 | 54 | hr, _, _ := i.Vtbl.PutHiddenPdfToolbarItems.Call( 55 | uintptr(unsafe.Pointer(i)), 56 | uintptr(value), 57 | ) 58 | if windows.Handle(hr) != windows.S_OK { 59 | return syscall.Errno(hr) 60 | } 61 | return nil 62 | } 63 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Settings8.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Settings8Vtbl struct { 12 | IUnknownVtbl 13 | GetIsReputationCheckingRequired ComProc 14 | PutIsReputationCheckingRequired ComProc 15 | } 16 | 17 | type ICoreWebView2Settings8 struct { 18 | Vtbl *ICoreWebView2Settings8Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Settings8) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Settings8() *ICoreWebView2Settings8 { 27 | var result *ICoreWebView2Settings8 28 | 29 | iidICoreWebView2Settings8 := NewGUID("{9e6b0e8f-86ad-4e81-8147-a9b5edb68650}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Settings8)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Settings8) GetIsReputationCheckingRequired() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _value int32 41 | 42 | hr, _, _ := i.Vtbl.GetIsReputationCheckingRequired.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | value := _value != 0 51 | return value, nil 52 | } 53 | 54 | func (i *ICoreWebView2Settings8) PutIsReputationCheckingRequired(value bool) error { 55 | 56 | hr, _, _ := i.Vtbl.PutIsReputationCheckingRequired.Call( 57 | uintptr(unsafe.Pointer(i)), 58 | uintptr(unsafe.Pointer(&value)), 59 | ) 60 | if windows.Handle(hr) != windows.S_OK { 61 | return syscall.Errno(hr) 62 | } 63 | return nil 64 | } 65 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2Settings9.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2Settings9Vtbl struct { 12 | IUnknownVtbl 13 | GetIsNonClientRegionSupportEnabled ComProc 14 | PutIsNonClientRegionSupportEnabled ComProc 15 | } 16 | 17 | type ICoreWebView2Settings9 struct { 18 | Vtbl *ICoreWebView2Settings9Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2Settings9) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2Settings9() *ICoreWebView2Settings9 { 27 | var result *ICoreWebView2Settings9 28 | 29 | iidICoreWebView2Settings9 := NewGUID("{0528a73b-e92d-49f4-927a-e547dddaa37d}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2Settings9)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2Settings9) GetIsNonClientRegionSupportEnabled() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _value int32 41 | 42 | hr, _, _ := i.Vtbl.GetIsNonClientRegionSupportEnabled.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | value := _value != 0 51 | return value, nil 52 | } 53 | 54 | func (i *ICoreWebView2Settings9) PutIsNonClientRegionSupportEnabled(value bool) error { 55 | 56 | hr, _, _ := i.Vtbl.PutIsNonClientRegionSupportEnabled.Call( 57 | uintptr(unsafe.Pointer(i)), 58 | uintptr(unsafe.Pointer(&value)), 59 | ) 60 | if windows.Handle(hr) != windows.S_OK { 61 | return syscall.Errno(hr) 62 | } 63 | return nil 64 | } 65 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2SourceChangedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2SourceChangedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetIsNewDocument ComProc 14 | } 15 | 16 | type ICoreWebView2SourceChangedEventArgs struct { 17 | Vtbl *ICoreWebView2SourceChangedEventArgsVtbl 18 | } 19 | 20 | func (i *ICoreWebView2SourceChangedEventArgs) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2SourceChangedEventArgs) GetIsNewDocument() (bool, error) { 26 | // Create int32 to hold bool result 27 | var _value int32 28 | 29 | hr, _, _ := i.Vtbl.GetIsNewDocument.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&_value)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return false, syscall.Errno(hr) 35 | } 36 | // Get result and cleanup 37 | value := _value != 0 38 | return value, nil 39 | } 40 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2StringCollection.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2StringCollectionVtbl struct { 12 | IUnknownVtbl 13 | GetCount ComProc 14 | GetValueAtIndex ComProc 15 | } 16 | 17 | type ICoreWebView2StringCollection struct { 18 | Vtbl *ICoreWebView2StringCollectionVtbl 19 | } 20 | 21 | func (i *ICoreWebView2StringCollection) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2StringCollection) GetCount() (uint32, error) { 27 | 28 | var value uint32 29 | 30 | hr, _, _ := i.Vtbl.GetCount.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return 0, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2StringCollection) GetValueAtIndex(index uint32) (string, error) { 41 | // Create *uint16 to hold result 42 | var _value *uint16 43 | 44 | hr, _, _ := i.Vtbl.GetValueAtIndex.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&index)), 47 | uintptr(unsafe.Pointer(_value)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return "", syscall.Errno(hr) 51 | } 52 | // Get result and cleanup 53 | value := UTF16PtrToString(_value) 54 | CoTaskMemFree(unsafe.Pointer(_value)) 55 | return value, nil 56 | } 57 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2WebMessageReceivedEventArgs2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2WebMessageReceivedEventArgs2Vtbl struct { 12 | IUnknownVtbl 13 | GetAdditionalObjects ComProc 14 | } 15 | 16 | type ICoreWebView2WebMessageReceivedEventArgs2 struct { 17 | Vtbl *ICoreWebView2WebMessageReceivedEventArgs2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2WebMessageReceivedEventArgs2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2WebMessageReceivedEventArgs2() *ICoreWebView2WebMessageReceivedEventArgs2 { 26 | var result *ICoreWebView2WebMessageReceivedEventArgs2 27 | 28 | iidICoreWebView2WebMessageReceivedEventArgs2 := NewGUID("{06fc7ab7-c90c-4297-9389-33ca01cf6d5e}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2WebMessageReceivedEventArgs2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2WebMessageReceivedEventArgs2) GetAdditionalObjects() (*ICoreWebView2ObjectCollectionView, error) { 38 | 39 | var value *ICoreWebView2ObjectCollectionView 40 | 41 | hr, _, _ := i.Vtbl.GetAdditionalObjects.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return nil, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2WebResourceRequestedEventArgs2.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2WebResourceRequestedEventArgs2Vtbl struct { 12 | IUnknownVtbl 13 | GetRequestedSourceKind ComProc 14 | } 15 | 16 | type ICoreWebView2WebResourceRequestedEventArgs2 struct { 17 | Vtbl *ICoreWebView2WebResourceRequestedEventArgs2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2WebResourceRequestedEventArgs2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2WebResourceRequestedEventArgs2() *ICoreWebView2WebResourceRequestedEventArgs2 { 26 | var result *ICoreWebView2WebResourceRequestedEventArgs2 27 | 28 | iidICoreWebView2WebResourceRequestedEventArgs2 := NewGUID("{9c562c24-b219-4d7f-92f6-b187fbbadd56}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2WebResourceRequestedEventArgs2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2WebResourceRequestedEventArgs2) GetRequestedSourceKind() (COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS, error) { 38 | 39 | var value COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS 40 | 41 | hr, _, _ := i.Vtbl.GetRequestedSourceKind.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return 0, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2WebResourceResponseReceivedEventArgs.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2WebResourceResponseReceivedEventArgsVtbl struct { 12 | IUnknownVtbl 13 | GetRequest ComProc 14 | GetResponse ComProc 15 | } 16 | 17 | type ICoreWebView2WebResourceResponseReceivedEventArgs struct { 18 | Vtbl *ICoreWebView2WebResourceResponseReceivedEventArgsVtbl 19 | } 20 | 21 | func (i *ICoreWebView2WebResourceResponseReceivedEventArgs) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2WebResourceResponseReceivedEventArgs) GetRequest() (*ICoreWebView2WebResourceRequest, error) { 27 | 28 | var value *ICoreWebView2WebResourceRequest 29 | 30 | hr, _, _ := i.Vtbl.GetRequest.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(&value)), 33 | ) 34 | if windows.Handle(hr) != windows.S_OK { 35 | return nil, syscall.Errno(hr) 36 | } 37 | return value, nil 38 | } 39 | 40 | func (i *ICoreWebView2WebResourceResponseReceivedEventArgs) GetResponse() (*ICoreWebView2WebResourceResponseView, error) { 41 | 42 | var value *ICoreWebView2WebResourceResponseView 43 | 44 | hr, _, _ := i.Vtbl.GetResponse.Call( 45 | uintptr(unsafe.Pointer(i)), 46 | uintptr(unsafe.Pointer(&value)), 47 | ) 48 | if windows.Handle(hr) != windows.S_OK { 49 | return nil, syscall.Errno(hr) 50 | } 51 | return value, nil 52 | } 53 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_10.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_10Vtbl struct { 12 | IUnknownVtbl 13 | AddBasicAuthenticationRequested ComProc 14 | RemoveBasicAuthenticationRequested ComProc 15 | } 16 | 17 | type ICoreWebView2_10 struct { 18 | Vtbl *ICoreWebView2_10Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_10) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_10() *ICoreWebView2_10 { 27 | var result *ICoreWebView2_10 28 | 29 | iidICoreWebView2_10 := NewGUID("{b1690564-6f5a-4983-8e48-31d1143fecdb}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_10)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_10) AddBasicAuthenticationRequested(eventHandler *ICoreWebView2BasicAuthenticationRequestedEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddBasicAuthenticationRequested.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2_10) RemoveBasicAuthenticationRequested(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemoveBasicAuthenticationRequested.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_13.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_13Vtbl struct { 12 | IUnknownVtbl 13 | GetProfile ComProc 14 | } 15 | 16 | type ICoreWebView2_13 struct { 17 | Vtbl *ICoreWebView2_13Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_13) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_13() *ICoreWebView2_13 { 26 | var result *ICoreWebView2_13 27 | 28 | iidICoreWebView2_13 := NewGUID("{f75f09a8-667e-4983-88d6-c8773f315e84}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_13)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_13) GetProfile() (*ICoreWebView2Profile, error) { 38 | 39 | var value *ICoreWebView2Profile 40 | 41 | hr, _, _ := i.Vtbl.GetProfile.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return nil, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_17.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_17Vtbl struct { 12 | IUnknownVtbl 13 | PostSharedBufferToScript ComProc 14 | } 15 | 16 | type ICoreWebView2_17 struct { 17 | Vtbl *ICoreWebView2_17Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_17) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_17() *ICoreWebView2_17 { 26 | var result *ICoreWebView2_17 27 | 28 | iidICoreWebView2_17 := NewGUID("{702e75d4-fd44-434d-9d70-1a68a6b1192a}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_17)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_17) PostSharedBufferToScript(sharedBuffer *ICoreWebView2SharedBuffer, access COREWEBVIEW2_SHARED_BUFFER_ACCESS, additionalDataAsJson string) error { 38 | 39 | // Convert string 'additionalDataAsJson' to *uint16 40 | _additionalDataAsJson, err := UTF16PtrFromString(additionalDataAsJson) 41 | if err != nil { 42 | return err 43 | } 44 | 45 | hr, _, _ := i.Vtbl.PostSharedBufferToScript.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(sharedBuffer)), 48 | uintptr(access), 49 | uintptr(unsafe.Pointer(_additionalDataAsJson)), 50 | ) 51 | if windows.Handle(hr) != windows.S_OK { 52 | return syscall.Errno(hr) 53 | } 54 | return nil 55 | } 56 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_18.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_18Vtbl struct { 12 | IUnknownVtbl 13 | AddLaunchingExternalUriScheme ComProc 14 | RemoveLaunchingExternalUriScheme ComProc 15 | } 16 | 17 | type ICoreWebView2_18 struct { 18 | Vtbl *ICoreWebView2_18Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_18) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_18() *ICoreWebView2_18 { 27 | var result *ICoreWebView2_18 28 | 29 | iidICoreWebView2_18 := NewGUID("{7a626017-28be-49b2-b865-3ba2b3522d90}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_18)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_18) AddLaunchingExternalUriScheme(eventHandler *ICoreWebView2LaunchingExternalUriSchemeEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddLaunchingExternalUriScheme.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2_18) RemoveLaunchingExternalUriScheme(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemoveLaunchingExternalUriScheme.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_19.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_19Vtbl struct { 12 | IUnknownVtbl 13 | GetMemoryUsageTargetLevel ComProc 14 | PutMemoryUsageTargetLevel ComProc 15 | } 16 | 17 | type ICoreWebView2_19 struct { 18 | Vtbl *ICoreWebView2_19Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_19) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_19() *ICoreWebView2_19 { 27 | var result *ICoreWebView2_19 28 | 29 | iidICoreWebView2_19 := NewGUID("{6921f954-79b0-437f-a997-c85811897c68}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_19)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_19) GetMemoryUsageTargetLevel() (COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL, error) { 39 | 40 | var value COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL 41 | 42 | hr, _, _ := i.Vtbl.GetMemoryUsageTargetLevel.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&value)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return 0, syscall.Errno(hr) 48 | } 49 | return value, nil 50 | } 51 | 52 | func (i *ICoreWebView2_19) PutMemoryUsageTargetLevel(value COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL) error { 53 | 54 | hr, _, _ := i.Vtbl.PutMemoryUsageTargetLevel.Call( 55 | uintptr(unsafe.Pointer(i)), 56 | uintptr(value), 57 | ) 58 | if windows.Handle(hr) != windows.S_OK { 59 | return syscall.Errno(hr) 60 | } 61 | return nil 62 | } 63 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_20.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_20Vtbl struct { 12 | IUnknownVtbl 13 | GetFrameId ComProc 14 | } 15 | 16 | type ICoreWebView2_20 struct { 17 | Vtbl *ICoreWebView2_20Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_20) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_20() *ICoreWebView2_20 { 26 | var result *ICoreWebView2_20 27 | 28 | iidICoreWebView2_20 := NewGUID("{b4bc1926-7305-11ee-b962-0242ac120002}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_20)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_20) GetFrameId() (uint32, error) { 38 | 39 | var value uint32 40 | 41 | hr, _, _ := i.Vtbl.GetFrameId.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(&value)), 44 | ) 45 | if windows.Handle(hr) != windows.S_OK { 46 | return 0, syscall.Errno(hr) 47 | } 48 | return value, nil 49 | } 50 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_21.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_21Vtbl struct { 12 | IUnknownVtbl 13 | ExecuteScriptWithResult ComProc 14 | } 15 | 16 | type ICoreWebView2_21 struct { 17 | Vtbl *ICoreWebView2_21Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_21) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_21() *ICoreWebView2_21 { 26 | var result *ICoreWebView2_21 27 | 28 | iidICoreWebView2_21 := NewGUID("{c4980dea-587b-43b9-8143-3ef3bf552d95}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_21)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_21) ExecuteScriptWithResult(javaScript string, handler *ICoreWebView2ExecuteScriptWithResultCompletedHandler) error { 38 | 39 | // Convert string 'javaScript' to *uint16 40 | _javaScript, err := UTF16PtrFromString(javaScript) 41 | if err != nil { 42 | return err 43 | } 44 | 45 | hr, _, _ := i.Vtbl.ExecuteScriptWithResult.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(_javaScript)), 48 | uintptr(unsafe.Pointer(handler)), 49 | ) 50 | if windows.Handle(hr) != windows.S_OK { 51 | return syscall.Errno(hr) 52 | } 53 | return nil 54 | } 55 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_23.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_23Vtbl struct { 12 | IUnknownVtbl 13 | PostWebMessageAsJsonWithAdditionalObjects ComProc 14 | } 15 | 16 | type ICoreWebView2_23 struct { 17 | Vtbl *ICoreWebView2_23Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_23) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_23() *ICoreWebView2_23 { 26 | var result *ICoreWebView2_23 27 | 28 | iidICoreWebView2_23 := NewGUID("{508f0db5-90c4-5872-90a7-267a91377502}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_23)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_23) PostWebMessageAsJsonWithAdditionalObjects(webMessageAsJson string, additionalObjects *ICoreWebView2ObjectCollectionView) error { 38 | 39 | // Convert string 'webMessageAsJson' to *uint16 40 | _webMessageAsJson, err := UTF16PtrFromString(webMessageAsJson) 41 | if err != nil { 42 | return err 43 | } 44 | 45 | hr, _, _ := i.Vtbl.PostWebMessageAsJsonWithAdditionalObjects.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(_webMessageAsJson)), 48 | uintptr(unsafe.Pointer(additionalObjects)), 49 | ) 50 | if windows.Handle(hr) != windows.S_OK { 51 | return syscall.Errno(hr) 52 | } 53 | return nil 54 | } 55 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_24.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_24Vtbl struct { 12 | IUnknownVtbl 13 | AddNotificationReceived ComProc 14 | RemoveNotificationReceived ComProc 15 | } 16 | 17 | type ICoreWebView2_24 struct { 18 | Vtbl *ICoreWebView2_24Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_24) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_24() *ICoreWebView2_24 { 27 | var result *ICoreWebView2_24 28 | 29 | iidICoreWebView2_24 := NewGUID("{39a7ad55-4287-5cc1-88a1-c6f458593824}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_24)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_24) AddNotificationReceived(eventHandler *ICoreWebView2NotificationReceivedEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddNotificationReceived.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2_24) RemoveNotificationReceived(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemoveNotificationReceived.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_26.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_26Vtbl struct { 12 | IUnknownVtbl 13 | AddSaveFileSecurityCheckStarting ComProc 14 | RemoveSaveFileSecurityCheckStarting ComProc 15 | } 16 | 17 | type ICoreWebView2_26 struct { 18 | Vtbl *ICoreWebView2_26Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_26) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_26() *ICoreWebView2_26 { 27 | var result *ICoreWebView2_26 28 | 29 | iidICoreWebView2_26 := NewGUID("{806268b8-f897-5685-88e5-c45fca0b1a48}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_26)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_26) AddSaveFileSecurityCheckStarting(eventHandler *ICoreWebView2SaveFileSecurityCheckStartingEventHandler) (EventRegistrationToken, error) { 39 | var token EventRegistrationToken 40 | 41 | hr, _, _ := i.Vtbl.AddSaveFileSecurityCheckStarting.Call( 42 | uintptr(unsafe.Pointer(i)), 43 | uintptr(unsafe.Pointer(eventHandler)), 44 | uintptr(unsafe.Pointer(&token)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return EventRegistrationToken{}, syscall.Errno(hr) 48 | } 49 | return token, nil 50 | } 51 | 52 | func (i *ICoreWebView2_26) RemoveSaveFileSecurityCheckStarting(token EventRegistrationToken) error { 53 | hr, _, _ := i.Vtbl.RemoveSaveFileSecurityCheckStarting.Call( 54 | uintptr(unsafe.Pointer(i)), 55 | uintptr(unsafe.Pointer(&token)), 56 | ) 57 | if windows.Handle(hr) != windows.S_OK { 58 | return syscall.Errno(hr) 59 | } 60 | return nil 61 | } 62 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_27.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_27Vtbl struct { 12 | IUnknownVtbl 13 | AddScreenCaptureStarting ComProc 14 | RemoveScreenCaptureStarting ComProc 15 | } 16 | 17 | type ICoreWebView2_27 struct { 18 | Vtbl *ICoreWebView2_27Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_27) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_27() *ICoreWebView2_27 { 27 | var result *ICoreWebView2_27 28 | 29 | iidICoreWebView2_27 := NewGUID("{00fbe33b-8c07-517c-aa23-0ddd4b5f6fa0}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_27)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_27) AddScreenCaptureStarting(eventHandler *ICoreWebView2ScreenCaptureStartingEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddScreenCaptureStarting.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2_27) RemoveScreenCaptureStarting(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemoveScreenCaptureStarting.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_5.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_5Vtbl struct { 12 | IUnknownVtbl 13 | AddClientCertificateRequested ComProc 14 | RemoveClientCertificateRequested ComProc 15 | } 16 | 17 | type ICoreWebView2_5 struct { 18 | Vtbl *ICoreWebView2_5Vtbl 19 | } 20 | 21 | func (i *ICoreWebView2_5) AddRef() uintptr { 22 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 23 | return refCounter 24 | } 25 | 26 | func (i *ICoreWebView2) GetICoreWebView2_5() *ICoreWebView2_5 { 27 | var result *ICoreWebView2_5 28 | 29 | iidICoreWebView2_5 := NewGUID("{bedb11b8-d63c-11eb-b8bc-0242ac130003}") 30 | _, _, _ = i.Vtbl.QueryInterface.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(iidICoreWebView2_5)), 33 | uintptr(unsafe.Pointer(&result))) 34 | 35 | return result 36 | } 37 | 38 | func (i *ICoreWebView2_5) AddClientCertificateRequested(eventHandler *ICoreWebView2ClientCertificateRequestedEventHandler) (EventRegistrationToken, error) { 39 | 40 | var token EventRegistrationToken 41 | 42 | hr, _, _ := i.Vtbl.AddClientCertificateRequested.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(eventHandler)), 45 | uintptr(unsafe.Pointer(&token)), 46 | ) 47 | if windows.Handle(hr) != windows.S_OK { 48 | return EventRegistrationToken{}, syscall.Errno(hr) 49 | } 50 | return token, nil 51 | } 52 | 53 | func (i *ICoreWebView2_5) RemoveClientCertificateRequested(token EventRegistrationToken) error { 54 | 55 | hr, _, _ := i.Vtbl.RemoveClientCertificateRequested.Call( 56 | uintptr(unsafe.Pointer(i)), 57 | uintptr(unsafe.Pointer(&token)), 58 | ) 59 | if windows.Handle(hr) != windows.S_OK { 60 | return syscall.Errno(hr) 61 | } 62 | return nil 63 | } 64 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_6.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_6Vtbl struct { 12 | IUnknownVtbl 13 | OpenTaskManagerWindow ComProc 14 | } 15 | 16 | type ICoreWebView2_6 struct { 17 | Vtbl *ICoreWebView2_6Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_6) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_6() *ICoreWebView2_6 { 26 | var result *ICoreWebView2_6 27 | 28 | iidICoreWebView2_6 := NewGUID("{499aadac-d92c-4589-8a75-111bfc167795}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_6)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_6) OpenTaskManagerWindow() error { 38 | 39 | hr, _, _ := i.Vtbl.OpenTaskManagerWindow.Call( 40 | uintptr(unsafe.Pointer(i)), 41 | ) 42 | if windows.Handle(hr) != windows.S_OK { 43 | return syscall.Errno(hr) 44 | } 45 | return nil 46 | } 47 | -------------------------------------------------------------------------------- /pkg/webview2/ICoreWebView2_7.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | import ( 6 | "golang.org/x/sys/windows" 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | type ICoreWebView2_7Vtbl struct { 12 | IUnknownVtbl 13 | PrintToPdf ComProc 14 | } 15 | 16 | type ICoreWebView2_7 struct { 17 | Vtbl *ICoreWebView2_7Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2_7) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_7() *ICoreWebView2_7 { 26 | var result *ICoreWebView2_7 27 | 28 | iidICoreWebView2_7 := NewGUID("{79c24d83-09a3-45ae-9418-487f32a58740}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_7)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | func (i *ICoreWebView2_7) PrintToPdf(ResultFilePath string, printSettings *ICoreWebView2PrintSettings, handler *ICoreWebView2PrintToPdfCompletedHandler) error { 38 | 39 | // Convert string 'ResultFilePath' to *uint16 40 | _ResultFilePath, err := UTF16PtrFromString(ResultFilePath) 41 | if err != nil { 42 | return err 43 | } 44 | 45 | hr, _, _ := i.Vtbl.PrintToPdf.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(_ResultFilePath)), 48 | uintptr(unsafe.Pointer(printSettings)), 49 | uintptr(unsafe.Pointer(handler)), 50 | ) 51 | if windows.Handle(hr) != windows.S_OK { 52 | return syscall.Errno(hr) 53 | } 54 | return nil 55 | } 56 | -------------------------------------------------------------------------------- /scripts/generator/README.md: -------------------------------------------------------------------------------- 1 | # webview2generator 2 | 3 | An experimental webview2 idl -> go code generator 4 | -------------------------------------------------------------------------------- /scripts/generator/interface_bool_test.go: -------------------------------------------------------------------------------- 1 | package generator 2 | 3 | import ( 4 | "bytes" 5 | _ "embed" 6 | "github.com/matryer/is" 7 | "github.com/stretchr/testify/require" 8 | "testing" 9 | "updater/generator/types" 10 | ) 11 | 12 | var interfaceTestData = []byte(` 13 | 14 | [uuid(26d34152-879f-4065-bea2-3daa2cfadfb8), version(1.0)] 15 | library WebView2 { 16 | 17 | [uuid(A0D6DF20-3B92-416D-AA0C-437A9C727857), object, pointer_default(unique)] 18 | interface ICoreWebView2_3 : ICoreWebView2_2 { 19 | [propget] HRESULT IsSuspended([out, retval] BOOL* isSuspended); 20 | } 21 | }`) 22 | 23 | func TestInterfaceBool(t *testing.T) { 24 | 25 | i := is.New(t) 26 | 27 | var buf bytes.Buffer 28 | buf.Write(interfaceTestData) 29 | 30 | idl, err := Parser.Parse("", &buf) 31 | i.NoErr(err) 32 | 33 | err = idl.Process() 34 | i.NoErr(err) 35 | 36 | files, err := idl.Generate() 37 | i.NoErr(err) 38 | 39 | // Remove the `com.go` filename 40 | files = files[1:] 41 | 42 | //for _, file := range files { 43 | // os.WriteFile("testfiles/"+file.FileName+".txt", file.Content.Bytes(), 0644) 44 | //} 45 | 46 | expected := []*types.GeneratedFile{ 47 | { 48 | FileName: "ICoreWebView2_3.go", 49 | Package: "webview2", 50 | Content: testfile("ICoreWebView2_3.go.txt"), 51 | }, 52 | } 53 | 54 | require.Equal(t, len(files), len(expected)) 55 | require.ElementsMatch(t, expected, files) 56 | 57 | } 58 | -------------------------------------------------------------------------------- /scripts/generator/interface_int_test.go: -------------------------------------------------------------------------------- 1 | package generator 2 | 3 | import ( 4 | "bytes" 5 | _ "embed" 6 | "github.com/matryer/is" 7 | "github.com/stretchr/testify/require" 8 | "testing" 9 | "updater/generator/types" 10 | ) 11 | 12 | func TestInterfaceInt(t *testing.T) { 13 | 14 | i := is.New(t) 15 | 16 | var buf bytes.Buffer 17 | buf.Write([]byte(` 18 | [uuid(26d34152-879f-4065-bea2-3daa2cfadfb8), version(1.0)] 19 | library WebView2 { 20 | 21 | [uuid(4dab9422-46fa-4c3e-a5d2-41d2071d3680), object, pointer_default(unique)] 22 | interface ICoreWebView2ProcessFailedEventArgs2 : ICoreWebView2ProcessFailedEventArgs { 23 | 24 | [propget] HRESULT ExitCode( 25 | [out, retval] int* exitCode); 26 | } 27 | } 28 | `)) 29 | 30 | idl, err := Parser.Parse("", &buf) 31 | i.NoErr(err) 32 | 33 | err = idl.Process() 34 | i.NoErr(err) 35 | 36 | files, err := idl.Generate() 37 | i.NoErr(err) 38 | 39 | // Remove the `com.go` filename 40 | files = files[1:] 41 | 42 | expected := []*types.GeneratedFile{ 43 | { 44 | FileName: "ICoreWebView2ProcessFailedEventArgs2.go", 45 | Package: "webview2", 46 | Content: testfile("ICoreWebView2ProcessFailedEventArgs2.go.txt"), 47 | }, 48 | } 49 | 50 | require.Equal(t, len(files), len(expected)) 51 | require.ElementsMatch(t, expected, files) 52 | 53 | } 54 | -------------------------------------------------------------------------------- /scripts/generator/interface_pointers_test.go: -------------------------------------------------------------------------------- 1 | package generator 2 | 3 | import ( 4 | "bytes" 5 | _ "embed" 6 | "github.com/matryer/is" 7 | "github.com/stretchr/testify/require" 8 | "testing" 9 | "updater/generator/types" 10 | ) 11 | 12 | func TestInterfaceDoublePointer(t *testing.T) { 13 | 14 | i := is.New(t) 15 | 16 | var buf bytes.Buffer 17 | buf.Write([]byte(` 18 | [uuid(26d34152-879f-4065-bea2-3daa2cfadfb8), version(1.0)] 19 | library WebView2 { 20 | 21 | [uuid(76eceacb-0462-4d94-ac83-423a6793775e), object, pointer_default(unique)] 22 | interface ICoreWebView2 : IUnknown { 23 | 24 | HRESULT add_NavigationStarting( 25 | [in] ICoreWebView2NavigationStartingEventHandler* eventHandler, 26 | [out] EventRegistrationToken* token); 27 | 28 | [propget] HRESULT Settings([out, retval] ICoreWebView2Settings** settings); 29 | 30 | } 31 | 32 | } 33 | `)) 34 | 35 | idl, err := Parser.Parse("", &buf) 36 | i.NoErr(err) 37 | 38 | err = idl.Process() 39 | i.NoErr(err) 40 | 41 | files, err := idl.Generate() 42 | i.NoErr(err) 43 | 44 | // Remove the `com.go` filename 45 | files = files[1:] 46 | 47 | expected := []*types.GeneratedFile{ 48 | { 49 | FileName: "ICoreWebView2.go", 50 | Package: "webview2", 51 | Content: testfile("ICoreWebView2.go.txt"), 52 | }, 53 | } 54 | 55 | require.Equal(t, len(files), len(expected)) 56 | require.Equal(t, files[0].Content.String(), expected[0].Content.String()) 57 | require.ElementsMatch(t, expected, files) 58 | 59 | } 60 | -------------------------------------------------------------------------------- /scripts/generator/interface_string_test.go: -------------------------------------------------------------------------------- 1 | package generator 2 | 3 | import ( 4 | "bytes" 5 | _ "embed" 6 | "github.com/matryer/is" 7 | "github.com/stretchr/testify/require" 8 | "testing" 9 | "updater/generator/types" 10 | ) 11 | 12 | func TestInterfaceString(t *testing.T) { 13 | 14 | i := is.New(t) 15 | 16 | var buf bytes.Buffer 17 | buf.Write([]byte(` 18 | [uuid(26d34152-879f-4065-bea2-3daa2cfadfb8), version(1.0)] 19 | library WebView2 { 20 | 21 | [uuid(da86b8a1-bdf3-4f11-9955-528cefa59727), object, pointer_default(unique)] 22 | interface ICoreWebView2FrameInfo : IUnknown { 23 | 24 | [propget] HRESULT Name([out, retval] LPWSTR* name); 25 | [propget] HRESULT Source([out, retval] LPWSTR* source); 26 | } 27 | 28 | } 29 | `)) 30 | 31 | idl, err := Parser.Parse("", &buf) 32 | i.NoErr(err) 33 | 34 | err = idl.Process() 35 | i.NoErr(err) 36 | 37 | files, err := idl.Generate() 38 | i.NoErr(err) 39 | 40 | // Remove the `com.go` filename 41 | files = files[1:] 42 | 43 | //for _, file := range files { 44 | // os.WriteFile("testfiles/"+file.FileName+".txt", file.Content.Bytes(), 0644) 45 | //} 46 | 47 | expected := []*types.GeneratedFile{ 48 | { 49 | FileName: "ICoreWebView2FrameInfo.go", 50 | Package: "webview2", 51 | Content: testfile("ICoreWebView2FrameInfo.go.txt"), 52 | }, 53 | } 54 | 55 | require.Equal(t, len(files), len(expected)) 56 | require.Equal(t, files[0].Content.String(), expected[0].Content.String()) 57 | require.ElementsMatch(t, expected, files) 58 | 59 | } 60 | 61 | /* 62 | [uuid(76eceacb-0462-4d94-ac83-423a6793775e), object, pointer_default(unique)] 63 | interface ICoreWebView2 : IUnknown { 64 | 65 | /// The `ICoreWebView2Settings` object contains various modifiable settings 66 | /// for the running WebView. 67 | 68 | [propget] HRESULT Settings([out, retval] ICoreWebView2Settings** settings); 69 | 70 | */ -------------------------------------------------------------------------------- /scripts/generator/parser.go: -------------------------------------------------------------------------------- 1 | package generator 2 | 3 | import ( 4 | "github.com/alecthomas/participle/v2" 5 | "github.com/alecthomas/participle/v2/lexer" 6 | "updater/generator/types" 7 | ) 8 | 9 | var ( 10 | idlLexer = lexer.MustSimple([]lexer.SimpleRule{ 11 | {"Comment", `(?:#|//)[^\n]*\n?`}, 12 | {"String", `"(\\"|[^"])*"`}, 13 | {"UUID", `[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}`}, 14 | {"Hex", `0x[a-fA-F0-9]+`}, 15 | {"Int", `[0-9]+`}, 16 | {"Ident", `[a-zA-Z]\w*`}, 17 | {"Number", `(?:@Int\.)?@Int`}, 18 | {"Punct", `[-[!@#$%^&*()+_={}\|:;"'<,>.?/]|]`}, 19 | {"Whitespace", `[ \t\n\r]+`}, 20 | }) 21 | Parser = participle.MustBuild[types.IDL]( 22 | participle.UseLookahead(4), 23 | participle.Elide("Comment", "Whitespace"), 24 | participle.Lexer(idlLexer), 25 | ) 26 | ) 27 | 28 | func ParseIDL(idlData []byte) ([]*types.GeneratedFile, error) { 29 | 30 | idl, err := Parser.ParseBytes("", idlData) 31 | if err != nil { 32 | return nil, err 33 | } 34 | 35 | err = idl.Process() 36 | if err != nil { 37 | return nil, err 38 | } 39 | 40 | generatedFiles, err := idl.Generate() 41 | if err != nil { 42 | return nil, err 43 | } 44 | return generatedFiles, nil 45 | } 46 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/COREWEBVIEW2_KEY_EVENT_KIND.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_KEY_EVENT_KIND uint32 6 | 7 | const ( 8 | COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN = 0 9 | COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP = 1 10 | COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN = 2 11 | COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP = 3 12 | ) 13 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/COREWEBVIEW2_PREFERRED_COLOR_SCHEME.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PREFERRED_COLOR_SCHEME uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO = 0 9 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT = 1 10 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK = 2 11 | ) 12 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/COREWEBVIEW2_PREFERRED_COLOR_SCHEME1.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PREFERRED_COLOR_SCHEME1 uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO1 = 1 9 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT1 = 2 10 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK1 = 3 11 | ) 12 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/COREWEBVIEW2_PREFERRED_COLOR_SCHEME2.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | 5 | type COREWEBVIEW2_PREFERRED_COLOR_SCHEME2 uint32 6 | 7 | const ( 8 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO2 = 1 << 1 9 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT2 = 1 << 2 10 | COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK2 = 1 << 3 11 | ) 12 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/ICoreWebView2.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | import ( 5 | "unsafe" 6 | "syscall" 7 | "golang.org/x/sys/windows" 8 | ) 9 | 10 | type ICoreWebView2Vtbl struct { 11 | IUnknownVtbl 12 | AddNavigationStarting ComProc 13 | GetSettings ComProc 14 | } 15 | 16 | type ICoreWebView2 struct { 17 | Vtbl *ICoreWebView2Vtbl 18 | } 19 | 20 | func (i *ICoreWebView2) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | 26 | func (i *ICoreWebView2) AddNavigationStarting(eventHandler *ICoreWebView2NavigationStartingEventHandler) (EventRegistrationToken, error) { 27 | 28 | var token EventRegistrationToken 29 | 30 | hr, _, err := i.Vtbl.AddNavigationStarting.Call( 31 | uintptr(unsafe.Pointer(i)), 32 | uintptr(unsafe.Pointer(eventHandler)), 33 | uintptr(unsafe.Pointer(&token)), 34 | ) 35 | if windows.Handle(hr) != windows.S_OK { 36 | return EventRegistrationToken{}, syscall.Errno(hr) 37 | } 38 | return token, err 39 | } 40 | 41 | func (i *ICoreWebView2) GetSettings() (*ICoreWebView2Settings, error) { 42 | 43 | var settings *ICoreWebView2Settings 44 | 45 | hr, _, err := i.Vtbl.GetSettings.Call( 46 | uintptr(unsafe.Pointer(i)), 47 | uintptr(unsafe.Pointer(&settings)), 48 | ) 49 | if windows.Handle(hr) != windows.S_OK { 50 | return nil, syscall.Errno(hr) 51 | } 52 | return settings, err 53 | } 54 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/ICoreWebView2AcceleratorKeyPressedEventArgs.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | import ( 5 | "unsafe" 6 | "syscall" 7 | "golang.org/x/sys/windows" 8 | ) 9 | 10 | type ICoreWebView2AcceleratorKeyPressedEventArgsVtbl struct { 11 | IUnknownVtbl 12 | GetKeyEventKind ComProc 13 | } 14 | 15 | type ICoreWebView2AcceleratorKeyPressedEventArgs struct { 16 | Vtbl *ICoreWebView2AcceleratorKeyPressedEventArgsVtbl 17 | } 18 | 19 | func (i *ICoreWebView2AcceleratorKeyPressedEventArgs) AddRef() uintptr { 20 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 21 | return refCounter 22 | } 23 | 24 | 25 | func (i *ICoreWebView2AcceleratorKeyPressedEventArgs) GetKeyEventKind() (COREWEBVIEW2_KEY_EVENT_KIND, error) { 26 | 27 | var keyEventKind COREWEBVIEW2_KEY_EVENT_KIND 28 | 29 | hr, _, err := i.Vtbl.GetKeyEventKind.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(&keyEventKind)), 32 | ) 33 | if windows.Handle(hr) != windows.S_OK { 34 | return 0, syscall.Errno(hr) 35 | } 36 | return keyEventKind, err 37 | } 38 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/ICoreWebView2CustomSchemeRegistration.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | import ( 5 | "unsafe" 6 | "syscall" 7 | "golang.org/x/sys/windows" 8 | ) 9 | 10 | type ICoreWebView2CustomSchemeRegistrationVtbl struct { 11 | IUnknownVtbl 12 | SetAllowedOrigins ComProc 13 | } 14 | 15 | type ICoreWebView2CustomSchemeRegistration struct { 16 | Vtbl *ICoreWebView2CustomSchemeRegistrationVtbl 17 | } 18 | 19 | func (i *ICoreWebView2CustomSchemeRegistration) AddRef() uintptr { 20 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 21 | return refCounter 22 | } 23 | 24 | 25 | func (i *ICoreWebView2CustomSchemeRegistration) SetAllowedOrigins(allowedOriginsCount uint32, allowedOrigins string) error { 26 | 27 | // Convert string 'allowedOrigins' to *uint16 28 | _allowedOrigins, err := UTF16PtrFromString(allowedOrigins) 29 | if err != nil { 30 | return err 31 | } 32 | 33 | hr, _, err := i.Vtbl.SetAllowedOrigins.Call( 34 | uintptr(unsafe.Pointer(i)), 35 | uintptr(unsafe.Pointer(&allowedOriginsCount)), 36 | uintptr(unsafe.Pointer(_allowedOrigins)), 37 | ) 38 | if windows.Handle(hr) != windows.S_OK { 39 | return syscall.Errno(hr) 40 | } 41 | return err 42 | } 43 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/ICoreWebView2FrameInfo.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | import ( 5 | "unsafe" 6 | "syscall" 7 | "golang.org/x/sys/windows" 8 | ) 9 | 10 | type ICoreWebView2FrameInfoVtbl struct { 11 | IUnknownVtbl 12 | GetName ComProc 13 | GetSource ComProc 14 | } 15 | 16 | type ICoreWebView2FrameInfo struct { 17 | Vtbl *ICoreWebView2FrameInfoVtbl 18 | } 19 | 20 | func (i *ICoreWebView2FrameInfo) AddRef() uintptr { 21 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 22 | return refCounter 23 | } 24 | 25 | 26 | func (i *ICoreWebView2FrameInfo) GetName() (string, error) { 27 | // Create *uint16 to hold result 28 | var _name *uint16 29 | 30 | 31 | hr, _, err := i.Vtbl.GetName.Call( 32 | uintptr(unsafe.Pointer(i)), 33 | uintptr(unsafe.Pointer(_name)), 34 | ) 35 | if windows.Handle(hr) != windows.S_OK { 36 | return "", syscall.Errno(hr) 37 | } 38 | // Get result and cleanup 39 | name := UTF16PtrToString(_name) 40 | CoTaskMemFree(unsafe.Pointer(_name)) 41 | return name, err 42 | } 43 | 44 | func (i *ICoreWebView2FrameInfo) GetSource() (string, error) { 45 | // Create *uint16 to hold result 46 | var _source *uint16 47 | 48 | 49 | hr, _, err := i.Vtbl.GetSource.Call( 50 | uintptr(unsafe.Pointer(i)), 51 | uintptr(unsafe.Pointer(_source)), 52 | ) 53 | if windows.Handle(hr) != windows.S_OK { 54 | return "", syscall.Errno(hr) 55 | } 56 | // Get result and cleanup 57 | source := UTF16PtrToString(_source) 58 | CoTaskMemFree(unsafe.Pointer(_source)) 59 | return source, err 60 | } 61 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/ICoreWebView2ProcessFailedEventArgs2.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | import ( 5 | "unsafe" 6 | "syscall" 7 | "golang.org/x/sys/windows" 8 | ) 9 | 10 | type ICoreWebView2ProcessFailedEventArgs2Vtbl struct { 11 | IUnknownVtbl 12 | GetExitCode ComProc 13 | } 14 | 15 | type ICoreWebView2ProcessFailedEventArgs2 struct { 16 | Vtbl *ICoreWebView2ProcessFailedEventArgs2Vtbl 17 | } 18 | 19 | func (i *ICoreWebView2ProcessFailedEventArgs2) AddRef() uintptr { 20 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 21 | return refCounter 22 | } 23 | 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2ProcessFailedEventArgs2() *ICoreWebView2ProcessFailedEventArgs2 { 26 | var result *ICoreWebView2ProcessFailedEventArgs2 27 | 28 | iidICoreWebView2ProcessFailedEventArgs2 := NewGUID("{4dab9422-46fa-4c3e-a5d2-41d2071d3680}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2ProcessFailedEventArgs2)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | 38 | func (i *ICoreWebView2ProcessFailedEventArgs2) GetExitCode() (int, error) { 39 | 40 | var exitCode int 41 | 42 | hr, _, err := i.Vtbl.GetExitCode.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(exitCode), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return 0, syscall.Errno(hr) 48 | } 49 | return exitCode, err 50 | } 51 | -------------------------------------------------------------------------------- /scripts/generator/testfiles/ICoreWebView2_3.go.txt: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webview2 4 | import ( 5 | "unsafe" 6 | "syscall" 7 | "golang.org/x/sys/windows" 8 | ) 9 | 10 | type ICoreWebView2_3Vtbl struct { 11 | IUnknownVtbl 12 | GetIsSuspended ComProc 13 | } 14 | 15 | type ICoreWebView2_3 struct { 16 | Vtbl *ICoreWebView2_3Vtbl 17 | } 18 | 19 | func (i *ICoreWebView2_3) AddRef() uintptr { 20 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 21 | return refCounter 22 | } 23 | 24 | 25 | func (i *ICoreWebView2) GetICoreWebView2_3() *ICoreWebView2_3 { 26 | var result *ICoreWebView2_3 27 | 28 | iidICoreWebView2_3 := NewGUID("{A0D6DF20-3B92-416D-AA0C-437A9C727857}") 29 | _, _, _ = i.Vtbl.QueryInterface.Call( 30 | uintptr(unsafe.Pointer(i)), 31 | uintptr(unsafe.Pointer(iidICoreWebView2_3)), 32 | uintptr(unsafe.Pointer(&result))) 33 | 34 | return result 35 | } 36 | 37 | 38 | func (i *ICoreWebView2_3) GetIsSuspended() (bool, error) { 39 | // Create int32 to hold bool result 40 | var _isSuspended int32 41 | 42 | hr, _, err := i.Vtbl.GetIsSuspended.Call( 43 | uintptr(unsafe.Pointer(i)), 44 | uintptr(unsafe.Pointer(&_isSuspended)), 45 | ) 46 | if windows.Handle(hr) != windows.S_OK { 47 | return false, syscall.Errno(hr) 48 | } 49 | // Get result and cleanup 50 | isSuspended := _isSuspended != 0 51 | return isSuspended, err 52 | } 53 | -------------------------------------------------------------------------------- /scripts/generator/types/bool.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | type Boolean bool 4 | 5 | func (b *Boolean) Capture(values []string) error { 6 | *b = values[0] == "true" 7 | return nil 8 | } 9 | -------------------------------------------------------------------------------- /scripts/generator/types/enum.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "io" 5 | "log" 6 | "strconv" 7 | "text/template" 8 | ) 9 | 10 | type EnumDeclaration struct { 11 | Name string `parser:"'typedef' 'enum' @Ident '{'"` 12 | Values []*EnumValue `parser:" (@@)+ '}' Ident ';'"` 13 | 14 | // private 15 | decl *Declaration 16 | } 17 | 18 | type EnumValue struct { 19 | Key string `parser:"@Ident"` 20 | Value *EnumValueDecl `parser:"('=' @@)? ','?"` 21 | } 22 | 23 | type EnumValueDecl struct { 24 | Value string `parser:"@Hex | @Int"` 25 | LeftShift *int `parser:"('<' '<' @Int)?"` 26 | } 27 | 28 | func (e *EnumValueDecl) Process() { 29 | if e.LeftShift != nil { 30 | e.Value += " << " + strconv.Itoa(*e.LeftShift) 31 | } 32 | } 33 | 34 | func (d *EnumDeclaration) Process(decl *Declaration) error { 35 | d.decl = decl 36 | for index, value := range d.Values { 37 | if value.Value == nil { 38 | value.Value = &EnumValueDecl{ 39 | Value: strconv.Itoa(index), 40 | } 41 | } else { 42 | value.Value.Process() 43 | } 44 | } 45 | decl.library.enums.Add(d.Name) 46 | return nil 47 | } 48 | 49 | func (d *EnumDeclaration) Generate(packageName string, w io.Writer) error { 50 | data := struct { 51 | PackageName string 52 | Name string 53 | Values []*EnumValue 54 | }{ 55 | PackageName: packageName, 56 | Name: d.Name, 57 | Values: d.Values, 58 | } 59 | templateData, err := templates.ReadFile("templates/enum.tmpl") 60 | if err != nil { 61 | return err 62 | } 63 | tmpl, err := template.New("Enum").Parse(string(templateData)) 64 | if err != nil { 65 | log.Fatalln(err) 66 | } 67 | return tmpl.Execute(w, &data) 68 | } 69 | -------------------------------------------------------------------------------- /scripts/generator/types/maps.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | var idlTypeToGoType = map[string]string{ 4 | "IUnknown": "IUnknown", 5 | "EventRegistrationToken": "EventRegistrationToken", 6 | "LPWSTR": "string", 7 | "LPCWSTR": "string", 8 | "HRESULT": "uintptr", 9 | "UINT64": "uint64", 10 | "UINT32": "uint32", 11 | "UINT": "uint", 12 | "INT": "int", 13 | "INT32": "int32", 14 | "INT64": "int64", 15 | "BOOL": "bool", 16 | "BYTE": "uint8", 17 | "DWORD": "uint32", 18 | "double": "float64", 19 | } 20 | 21 | func IdlTypeToGoType(input string) string { 22 | result := idlTypeToGoType[input] 23 | if result == "" { 24 | return input 25 | } 26 | return result 27 | } 28 | -------------------------------------------------------------------------------- /scripts/generator/types/struct.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "io" 5 | "log" 6 | "text/template" 7 | ) 8 | 9 | type StructDeclaration struct { 10 | Name string `parser:"'typedef' 'struct' @Ident '{' "` 11 | Fields []*StructField `parser:" (@@)+ '}' Ident ';'"` 12 | 13 | // private 14 | decl *Declaration 15 | } 16 | 17 | func (d *StructDeclaration) Process(decl *Declaration) error { 18 | d.decl = decl 19 | for _, f := range d.Fields { 20 | f.Process() 21 | } 22 | return nil 23 | } 24 | 25 | func (d *StructDeclaration) Generate(packageName string, w io.Writer) error { 26 | data := struct { 27 | PackageName string 28 | Name string 29 | Fields []*StructField 30 | }{ 31 | PackageName: packageName, 32 | Name: d.Name, 33 | Fields: d.Fields, 34 | } 35 | templateData, err := templates.ReadFile("templates/struct.tmpl") 36 | if err != nil { 37 | return err 38 | } 39 | tmpl, err := template.New("Struct").Parse(string(templateData)) 40 | if err != nil { 41 | log.Fatalln(err) 42 | } 43 | return tmpl.Execute(w, &data) 44 | } 45 | 46 | type StructField struct { 47 | Type string `parser:"@('UINT32' | 'BOOL' | 'BYTE')"` 48 | Name string `parser:"@Ident ';'"` 49 | 50 | // process 51 | GoType string 52 | } 53 | 54 | func (s *StructField) Process() { 55 | s.GoType = IdlTypeToGoType(s.Type) 56 | } 57 | -------------------------------------------------------------------------------- /scripts/generator/types/templates.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "embed" 4 | 5 | //go:embed templates/* 6 | var templates embed.FS 7 | -------------------------------------------------------------------------------- /scripts/generator/types/templates/enum.tmpl: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package {{.PackageName}} 4 | 5 | type {{.Name}} uint32 6 | 7 | const ( 8 | {{- range .Values}} 9 | {{.Key}} = {{.Value.Value}} 10 | {{- end}} 11 | ) 12 | -------------------------------------------------------------------------------- /scripts/generator/types/templates/inputStringSetup.tmpl: -------------------------------------------------------------------------------- 1 | 2 | // Convert string '{{.Param.Name}}' to *uint16 3 | {{.Param.LocalName}}, err := UTF16PtrFromString({{.Param.Name}}) 4 | if err != nil { 5 | return {{.ErrorValues}} 6 | } -------------------------------------------------------------------------------- /scripts/generator/types/templates/interfaceInvoke.tmpl: -------------------------------------------------------------------------------- 1 | func {{.Name}}IUnknownQueryInterface(this *{{.Declaration.Name}}, refiid, object uintptr) uintptr { 2 | return this.impl.QueryInterface(refiid, object) 3 | } 4 | 5 | func {{.Declaration.Name}}IUnknownAddRef(this *{{.Declaration.Name}}) uintptr { 6 | return this.impl.AddRef() 7 | } 8 | 9 | func {{.Declaration.Name}}IUnknownRelease(this *{{.Declaration.Name}}) uintptr { 10 | return this.impl.Release() 11 | } 12 | 13 | func {{.Declaration.Name}}Invoke(this *{{.Declaration.Name}}, {{.InvokeMethod.GoInputs}}) uintptr { 14 | return this.impl.{{.InvokeMethod.GoMethodName}}({{.InvokeMethod.InputParamNames}}) 15 | } 16 | 17 | type {{.Declaration.Name}}Impl interface { 18 | IUnknownImpl 19 | {{.InvokeMethod.GoMethodName}}({{.InvokeMethod.GoInputs}}) uintptr 20 | } 21 | 22 | var {{.Declaration.Name}}Fn = {{.Declaration.Name}}Vtbl{ 23 | IUnknownVtbl { 24 | NewComProc({{.Declaration.Name}}IUnknownQueryInterface), 25 | NewComProc({{.Declaration.Name}}IUnknownAddRef), 26 | NewComProc({{.Declaration.Name}}IUnknownRelease), 27 | }, 28 | NewComProc({{.Declaration.Name}}Invoke), 29 | } 30 | 31 | func New{{.Declaration.Name}}(impl {{.Declaration.Name}}Impl) *{{.Declaration.Name}} { 32 | return &{{.Declaration.Name}}{ 33 | Vtbl: &{{.Declaration.Name}}Fn, 34 | impl: impl, 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /scripts/generator/types/templates/interfaceMethod.tmpl: -------------------------------------------------------------------------------- 1 | 2 | func (i *{{.Name}}) {{.Method.ProcessedName}}({{.Method.GoInputs}}) {{.Method.GoReturnTypes}} { 3 | {{ .Method.SetupCode}} 4 | 5 | {{ .Method.GetHResultVariable }}, _, err := i.Vtbl.{{.Method.ProcessedName}}.Call( 6 | uintptr(unsafe.Pointer(i)), 7 | {{ .Method.VtableCallInputs}} ) 8 | 9 | {{- if .Method.ReturnsHRESULT}} 10 | if windows.Handle(hr) != windows.S_OK { 11 | return {{.Method.ErrorValuesHRESULT}} 12 | } 13 | {{- end}} 14 | 15 | {{- .Method.CleanupCode}} 16 | return {{.Method.SuccessValues}} 17 | } 18 | -------------------------------------------------------------------------------- /scripts/generator/types/templates/interfacevtbl.tmpl: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package {{.PackageName}} 4 | 5 | {{- if .Includes }} 6 | import ( 7 | {{- range .Includes}} 8 | {{.}} 9 | {{- end}} 10 | ) 11 | {{- end}} 12 | 13 | type {{.Name}}Vtbl struct { 14 | IUnknownVtbl 15 | {{- range .Methods}} 16 | {{.ProcessedName}} ComProc 17 | {{- end}} 18 | } 19 | 20 | type {{.Name}} struct { 21 | Vtbl *{{.Name}}Vtbl 22 | {{- if .HasInvokeMethod }} 23 | impl {{.Name}}Impl 24 | {{- end}} 25 | } 26 | 27 | func (i *{{.Name}}) AddRef() uintptr { 28 | refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) 29 | return refCounter 30 | } 31 | 32 | {{if .BaseClass }} 33 | func (i *ICoreWebView2) Get{{.Name}}() *{{.Name}} { 34 | var result *{{.Name}} 35 | 36 | iid{{.Name}} := NewGUID({{.Header.AsString}}) 37 | _, _, _ = i.Vtbl.QueryInterface.Call( 38 | uintptr(unsafe.Pointer(i)), 39 | uintptr(unsafe.Pointer(iid{{.Name}})), 40 | uintptr(unsafe.Pointer(&result))) 41 | 42 | return result 43 | } 44 | 45 | {{end}} -------------------------------------------------------------------------------- /scripts/generator/types/templates/outputBoolCleanup.tmpl: -------------------------------------------------------------------------------- 1 | 2 | // Get result and cleanup 3 | {{.Name}} := {{.LocalName}} != 0 4 | {{- .ClearLocalName}} -------------------------------------------------------------------------------- /scripts/generator/types/templates/outputBoolSetup.tmpl: -------------------------------------------------------------------------------- 1 | // Create int32 to hold bool result 2 | var {{.Param.LocalName}} int32 -------------------------------------------------------------------------------- /scripts/generator/types/templates/outputDefaultSetup.tmpl: -------------------------------------------------------------------------------- 1 | 2 | var {{.Param.GetVariableName}} {{.Param.LocalVariableType}} -------------------------------------------------------------------------------- /scripts/generator/types/templates/outputStringCleanup.tmpl: -------------------------------------------------------------------------------- 1 | 2 | // Get result and cleanup 3 | {{.Name}} := UTF16PtrToString({{.LocalName}}) 4 | CoTaskMemFree(unsafe.Pointer({{.LocalName}})) 5 | {{- .ClearLocalName}} -------------------------------------------------------------------------------- /scripts/generator/types/templates/outputStringSetup.tmpl: -------------------------------------------------------------------------------- 1 | // Create *uint16 to hold result 2 | var {{.Param.LocalName}} *uint16 3 | -------------------------------------------------------------------------------- /scripts/generator/types/templates/struct.tmpl: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package {{.PackageName}} 4 | 5 | type {{.Name}} struct { 6 | {{- range .Fields}} 7 | {{.Name}} {{.GoType}} 8 | {{- end}} 9 | } 10 | -------------------------------------------------------------------------------- /scripts/generator/types/uuid.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | type UUID string 4 | 5 | func (u *UUID) Capture(values []string) error { 6 | //println("UUID =", values[0]) 7 | *u = UUID(values[0]) 8 | return nil 9 | } 10 | -------------------------------------------------------------------------------- /scripts/go.mod: -------------------------------------------------------------------------------- 1 | module updater 2 | 3 | go 1.20 4 | 5 | require ( 6 | github.com/alecthomas/participle/v2 v2.0.0 7 | github.com/go-resty/resty/v2 v2.7.0 8 | github.com/leaanthony/slicer v1.6.0 9 | github.com/matryer/is v1.4.1 10 | github.com/stretchr/testify v1.8.4 11 | ) 12 | 13 | require ( 14 | github.com/davecgh/go-spew v1.1.1 // indirect 15 | github.com/pmezard/go-difflib v1.0.0 // indirect 16 | golang.org/x/net v0.0.0-20211030010937-7b24c0a3601d // indirect 17 | gopkg.in/yaml.v3 v3.0.1 // indirect 18 | ) 19 | -------------------------------------------------------------------------------- /scripts/latest_version.txt: -------------------------------------------------------------------------------- 1 | 1.0.2903.40 -------------------------------------------------------------------------------- /webviewloader/LICENSE: -------------------------------------------------------------------------------- 1 | ISC License (ISC) 2 | 3 | Copyright (c) 2020 John Chadwick 4 | Copyright (c) 2022 Wails Project Developers 5 | 6 | Permission to use, copy, modify, and/or distribute this software for any 7 | purpose with or without fee is hereby granted, provided that the above 8 | copyright notice and this permission notice appear in all copies. 9 | 10 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 11 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 12 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 13 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 14 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 15 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 | PERFORMANCE OF THIS SOFTWARE. 17 | -------------------------------------------------------------------------------- /webviewloader/README.md: -------------------------------------------------------------------------------- 1 | # Webviewloader 2 | 3 | Webviewloader is a port of [OpenWebView2Loader](https://github.com/jchv/OpenWebView2Loader) to Go. 4 | 5 | It is intended to be feature-complete with the original WebView2Loader distributed with 6 | the WebView2 NuGet package, but some features are intentionally not implemented. 7 | 8 | ## Status 9 | 10 | - [x] CompareBrowserVersions 11 | - [x] CreateCoreWebView2Environment 12 | - [x] CreateCoreWebView2EnvironmentWithOptions 13 | - [x] GetAvailableCoreWebView2BrowserVersionString 14 | 15 | ## Not implemented features 16 | 17 | - Registry Overrides of Parameters 18 | - Env Variable Overrides of Parameters 19 | - Does not incorporate `GetCurrentPackageInfo` to search for an installed runtime 20 | -------------------------------------------------------------------------------- /webviewloader/arm64/WebView2Loader.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wailsapp/go-webview2/7f3bc718add716fc1949c95b37b241c917bfdc07/webviewloader/arm64/WebView2Loader.dll -------------------------------------------------------------------------------- /webviewloader/env_create_completed.go: -------------------------------------------------------------------------------- 1 | //go:build windows && !native_webview2loader 2 | 3 | package webviewloader 4 | 5 | import ( 6 | "github.com/wailsapp/go-webview2/pkg/combridge" 7 | ) 8 | 9 | // HRESULT 10 | // 11 | // See https://docs.microsoft.com/en-us/windows/win32/seccrypto/common-hresult-values 12 | type HRESULT int32 13 | 14 | // ICoreWebView2Environment Represents the WebView2 Environment 15 | // 16 | // See https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2environment 17 | type ICoreWebView2Environment = combridge.IUnknownImpl 18 | 19 | // ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler receives the WebView2Environment created using CreateCoreWebView2Environment. 20 | type ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler interface { 21 | // EnvironmentCompleted is invoked to receive the created WebView2Environment 22 | // 23 | // See https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2createcorewebview2environmentcompletedhandler?#invoke 24 | EnvironmentCompleted(errorCode HRESULT, createdEnvironment *ICoreWebView2Environment) HRESULT 25 | } 26 | 27 | type iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler interface { 28 | combridge.IUnknown 29 | ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler 30 | } 31 | 32 | func init() { 33 | combridge.RegisterVTable[combridge.IUnknown, iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler]( 34 | "{4e8a3389-c9d8-4bd2-b6b5-124fee6cc14d}", 35 | _iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandlerInvoke, 36 | ) 37 | } 38 | 39 | func _iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandlerInvoke(this uintptr, errorCode HRESULT, env *combridge.IUnknownImpl) uintptr { 40 | res := combridge.Resolve[iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler](this).EnvironmentCompleted(errorCode, env) 41 | return uintptr(res) 42 | } 43 | -------------------------------------------------------------------------------- /webviewloader/find_dll.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package webviewloader 4 | 5 | import ( 6 | "errors" 7 | "fmt" 8 | "os" 9 | "path/filepath" 10 | "runtime" 11 | 12 | "golang.org/x/sys/windows/registry" 13 | ) 14 | 15 | var ( 16 | errNoClientDLLFound = errors.New("no webview2 found") 17 | ) 18 | 19 | func findEmbeddedBrowserVersion(filename string) (string, error) { 20 | block, err := getFileVersionInfo(filename) 21 | if err != nil { 22 | return "", err 23 | } 24 | 25 | info, err := verQueryValueString(block, "\\StringFileInfo\\040904B0\\ProductVersion") 26 | if err != nil { 27 | return "", err 28 | } 29 | 30 | return info, nil 31 | } 32 | 33 | func findEmbeddedClientDll(embeddedEdgeSubFolder string) (outClientPath string, err error) { 34 | if !filepath.IsAbs(embeddedEdgeSubFolder) { 35 | exe, err := os.Executable() 36 | if err != nil { 37 | return "", err 38 | } 39 | 40 | embeddedEdgeSubFolder = filepath.Join(filepath.Dir(exe), embeddedEdgeSubFolder) 41 | } 42 | 43 | return findClientDllInFolder(embeddedEdgeSubFolder) 44 | } 45 | 46 | func findClientDllInFolder(folder string) (string, error) { 47 | arch := "" 48 | switch runtime.GOARCH { 49 | case "arm64": 50 | arch = "arm64" 51 | case "amd64": 52 | arch = "x64" 53 | case "386": 54 | arch = "x86" 55 | default: 56 | return "", fmt.Errorf("Unsupported architecture") 57 | } 58 | 59 | dllPath := filepath.Join(folder, "EBWebView", arch, "EmbeddedBrowserWebView.dll") 60 | if _, err := os.Stat(dllPath); err != nil { 61 | return "", mapFindErr(err) 62 | } 63 | return dllPath, nil 64 | } 65 | 66 | func mapFindErr(err error) error { 67 | if errors.Is(err, registry.ErrNotExist) { 68 | return errNoClientDLLFound 69 | } 70 | if errors.Is(err, os.ErrNotExist) { 71 | return errNoClientDLLFound 72 | } 73 | return err 74 | } 75 | -------------------------------------------------------------------------------- /webviewloader/native_module_386.go: -------------------------------------------------------------------------------- 1 | //go:build windows && native_webview2loader 2 | 3 | package webviewloader 4 | 5 | import _ "embed" 6 | 7 | //go:embed x86/WebView2Loader.dll 8 | var WebView2Loader []byte 9 | -------------------------------------------------------------------------------- /webviewloader/native_module_amd64.go: -------------------------------------------------------------------------------- 1 | //go:build windows && native_webview2loader 2 | 3 | package webviewloader 4 | 5 | import _ "embed" 6 | 7 | //go:embed x64/WebView2Loader.dll 8 | var WebView2Loader []byte 9 | -------------------------------------------------------------------------------- /webviewloader/native_module_arm64.go: -------------------------------------------------------------------------------- 1 | //go:build windows && native_webview2loader 2 | 3 | package webviewloader 4 | 5 | import _ "embed" 6 | 7 | //go:embed arm64/WebView2Loader.dll 8 | var WebView2Loader []byte 9 | -------------------------------------------------------------------------------- /webviewloader/x64/WebView2Loader.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wailsapp/go-webview2/7f3bc718add716fc1949c95b37b241c917bfdc07/webviewloader/x64/WebView2Loader.dll -------------------------------------------------------------------------------- /webviewloader/x86/WebView2Loader.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wailsapp/go-webview2/7f3bc718add716fc1949c95b37b241c917bfdc07/webviewloader/x86/WebView2Loader.dll --------------------------------------------------------------------------------