Files
GitHub Actions c1a0fe2949 Switch remote deploy to vendored source builds
Move remote deployment to a vendored source bundle built on the target host via Docker so redeploys no longer require local cross-compilation or host Go installation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 12:19:18 +08:00

171 lines
8.4 KiB
Go

package edge
import "github.com/wailsapp/go-webview2/webviewloader"
type Capability string
var UnsupportedCapabilityError = &unsupportedCapabilityError{}
type unsupportedCapabilityError struct{}
func (u *unsupportedCapabilityError) Error() string {
return "unsupported capability"
}
// Capabilities is a list of capabilities with their corresponding minimum runtime version
// Internal Capabilities are not exposed to the user
// Larger capabilities such as DragAndDrop should be exported with a capital letter
// WebView2 Runtime Version 131.0.2903.40 (Released: September 2023)
const (
ScreenCapture = Capability("131.0.2903.40") // Screen capture support
NonClientRegion = Capability("131.0.2903.40") // Non-client region customization
DownloadDialog = Capability("131.0.2903.40") // Download dialog handling
BrowserExtension = Capability("131.0.2903.40") // Browser extension support
BasicAuthentication = Capability("131.0.2903.40") // Basic authentication handling
SaveFileDialog = Capability("131.0.2903.40") // Save file dialog support
)
// WebView2 Runtime Version 113.0.1774.30 (Released: Unknown)
const (
GetAdditionalObjects = Capability("113.0.1774.30") // Additional objects support
)
// WebView2 Runtime Version 100.0.1185.39 (Released: April 2022)
const (
AllowExternalDrop = Capability("100.0.1185.39") // External drop support
GeneralAutofillEnabled = Capability("100.0.1185.39") // General autofill features
PasswordAutosaveEnabled = Capability("100.0.1185.39") // Password autosave support
)
// WebView2 Runtime Version 98.0.1108.43 (Released: February 2022)
const (
CustomScheme = Capability("98.0.1108.43") // Custom scheme support
PrintToPdf = Capability("98.0.1108.43") // Print to PDF functionality
SharedBuffer = Capability("98.0.1108.43") // Shared buffer for performance
ServerCertificate = Capability("98.0.1108.43") // Server certificate handling
FrameNavigation = Capability("98.0.1108.43") // Frame navigation events
)
// WebView2 Runtime Version 97.0.1072.69 (Released: January 2022)
const (
ClientCertificate = Capability("97.0.1072.69") // Client certificate selection
ContextMenus = Capability("97.0.1072.69") // Custom context menus
BackgroundColor = Capability("97.0.1072.69") // Background color customization
ScriptEnabled = Capability("97.0.1072.69") // JavaScript execution control
StatusBar = Capability("97.0.1072.69") // Status bar customization
)
// WebView2 Runtime Version 95.0.1020.44 (Released: October 2021)
const (
WebMessageReceived = Capability("95.0.1020.44") // Web message handling
NewWindowRequested = Capability("95.0.1020.44") // New window request handling
DocumentTitleChanged = Capability("95.0.1020.44") // Document title change events
ContainsFullScreen = Capability("95.0.1020.44") // Fullscreen mode detection
WebResourceRequested = Capability("95.0.1020.44") // Web resource request handling
)
// WebView2 Runtime Version 94.0.992.31 (Released: September 2021)
const (
NavigationStarting = Capability("94.0.992.31") // Navigation start events
NavigationCompleted = Capability("94.0.992.31") // Navigation completion events
FrameNavigationStarting = Capability("94.0.992.31") // Frame navigation start
SourceChanged = Capability("94.0.992.31") // Source change detection
HistoryChanged = Capability("94.0.992.31") // Browser history changes
SwipeNavigation = Capability("94.0.992.31") // Swipe navigation support
)
// WebView2 Runtime Version 93.0.961.52 (Released: August 2021)
const (
DOMContentLoaded = Capability("93.0.961.52") // DOM content loaded events
WebResourceLoaded = Capability("93.0.961.52") // Resource load events
ScriptDialogOpening = Capability("93.0.961.52") // Script dialog handling
PermissionRequested = Capability("93.0.961.52") // Permission request handling
ProcessFailed = Capability("93.0.961.52") // Process failure detection
)
// WebView2 Runtime Version 92.0.902.78 (Released: July 2021)
const (
AcceleratorKeyPressed = Capability("92.0.902.78") // Accelerator key handling
ZoomFactorChanged = Capability("92.0.902.78") // Zoom factor change events
MoveFocusRequested = Capability("92.0.902.78") // Focus movement handling
DevToolsProtocol = Capability("92.0.902.78") // DevTools protocol support
BrowserProcessExited = Capability("92.0.902.78") // Browser process exit handling
)
// WebView2 Runtime Version 91.0.864.41 (Released: June 2021)
const (
DefaultDownloadDialog = Capability("91.0.864.41") // Default download dialog
DefaultContextMenus = Capability("91.0.864.41") // Default context menus
FaviconChanged = Capability("91.0.864.41") // Favicon change events
WindowCloseRequested = Capability("91.0.864.41") // Window close request handling
RasterizationScale = Capability("91.0.864.41") // Display scaling support
SecurityUpdated = Capability("91.0.864.41") // Security state updates
ProcessInfoReceived = Capability("91.0.864.41") // Process info events
FramePermissionRequested = Capability("91.0.864.41") // Frame permission requests
ClearBrowsingData = Capability("91.0.864.41") // Clear browsing data support
IsMutedChanged = Capability("91.0.864.41") // Audio mute state changes
)
// WebView2 Runtime Version 90.0.818.41 (Released: May 2021)
const (
WebResourceResponseReceived = Capability("90.0.818.41") // Web resource response handling
DOMContentLoaded90 = Capability("90.0.818.41") // DOM content loaded events (v90)
WebResourceRequested90 = Capability("90.0.818.41") // Web resource requests (v90)
NewWindowWithOptions = Capability("90.0.818.41") // New window with options
CookieManagement = Capability("90.0.818.41") // Cookie management support
)
// WebView2 Runtime Version 89.0.774.75 (Released: April 2021)
const (
IsBuiltInErrorPageEnabled = Capability("89.0.774.75") // Built-in error page support
WebResourceResponse = Capability("89.0.774.75") // Web resource response handling
ScriptToExecuteOnDocumentCreated = Capability("89.0.774.75") // Document creation scripts
EnvironmentOptions = Capability("89.0.774.75") // Environment options support
FrameNavigation89 = Capability("89.0.774.75") // Frame navigation (v89)
)
// WebView2 Runtime Version 88.0.705.74 (Released: March 2021)
const (
WebResourceRequested88 = Capability("88.0.705.74") // Web resource requests (v88)
PermissionRequested88 = Capability("88.0.705.74") // Permission requests (v88)
ProcessFailed88 = Capability("88.0.705.74") // Process failure handling (v88)
AddHostObjectToScript = Capability("88.0.705.74") // Host object scripting
IsMuted = Capability("88.0.705.74") // Audio mute state
)
// WebView2 Runtime Version 87.0.664.75 (Released: February 2021)
const (
WebMessageReceived87 = Capability("87.0.664.75") // Web message handling (v87)
CallDevToolsProtocolMethod = Capability("87.0.664.75") // DevTools protocol method calls
NewWindow87 = Capability("87.0.664.75") // New window creation (v87)
DocumentTitleChanged87 = Capability("87.0.664.75") // Document title changes (v87)
IsSuspended = Capability("87.0.664.75") // Suspension state
)
// WebView2 Runtime Version 86.0.622.58 (Released: January 2021)
const (
NavigationStarting86 = Capability("86.0.622.58") // Navigation start events (v86)
NavigationCompleted86 = Capability("86.0.622.58") // Navigation completion (v86)
FrameNavigationStarting86 = Capability("86.0.622.58") // Frame navigation start (v86)
BasicWebView = Capability("86.0.622.58") // Basic WebView2 functionality
WindowBounds = Capability("86.0.622.58") // Window bounds control
)
// WebView2 Runtime Version 85.0.564.70 (Released: December 2020)
const (
WebView2Environment = Capability("85.0.564.70") // WebView2 environment
WebView2Controller = Capability("85.0.564.70") // WebView2 controller
BasicSettings = Capability("85.0.564.70") // Basic settings support
UserDataFolder = Capability("85.0.564.70") // User data folder
BrowserVersionString = Capability("85.0.564.70") // Browser version info
)
func HasCapability(webview2RuntimeVersion string, capability Capability) bool {
result, err := webviewloader.CompareBrowserVersions(webview2RuntimeVersion, string(capability))
if err != nil {
return false
}
return result >= 0
}