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>
171 lines
8.4 KiB
Go
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
|
|
}
|