Skip to main content

Browser Feature

The Browser feature controls the web browser engine settings: context menu, media autoplay, web security, clipboard access, user agent, status bar, and more. It is available at build time for initial configuration and at runtime for live changes.

Contents

Builder Configuration

var builder = InfiniFrameWindowBuilder.Create()
.EnableContextMenu(false)
.EnableZoom(false)
.EnableMediaAutoplay(true)
.EnableFileSystemAccess(true)
.EnableWebSecurity(false)
.EnableJavascriptClipboardAccess(true)
.EnableMediaStream(true)
.EnableSmoothScrolling(true)
.EnableIgnoreCertificateErrors()
.EnableStatusBar(false)
.EnableBrowserShortcuts(false)
.SetUserAgent("MyApp/1.0")
.SetStartPageUrl("https://myapp.local");
MethodDescription
EnableContextMenu(bool)Show/hide right-click context menu
EnableMediaAutoplay(bool)Allow/block media autoplay
EnableFileSystemAccess(bool)Enable/disable file system access API
EnableWebSecurity(bool)Toggle browser-level web security
EnableJavascriptClipboardAccess(bool)Allow JS clipboard access
EnableMediaStream(bool)Allow camera/microphone access
EnableSmoothScrolling(bool)Enable smooth scrolling
EnableIgnoreCertificateErrors(bool)Ignore SSL/TLS certificate errors
EnableStatusBar(bool)Show/hide URL hover status indicator
EnableBrowserShortcuts(bool)Enable/disable browser keyboard shortcuts
SetUserAgent(string?)Set a custom user agent string
SetBrowserControlInitParameters(string?)Pass raw flags to the browser engine
SetTemporaryFilesPath(string)Set browser cache directory
SetWebView2RuntimePath(string)Set bundled WebView2 runtime path (Windows only)

Runtime Control

After Build(), modify browser settings through extension methods or the feature interface:

// Extension methods
window.EnableContextMenu(false);
window.EnableStatusBar(false);
window.EnableBrowserShortcuts(true);

// Direct feature access
window.Features.Browser.EnableContextMenu(false);
window.Features.Browser.EnableStatusBar(false);

// Read current values
bool contextMenuEnabled = window.Features.Browser.IsContextMenuEnabled;
string? userAgent = window.Features.Browser.UserAgent;
bool statusBarEnabled = window.Features.Browser.IsStatusBarEnabled;

Context Menu

Control whether the right-click context menu appears in the browser:

// Builder
builder.SetContextMenuEnabled(false);

// Runtime
window.Features.Browser.EnableContextMenu(false);
bool enabled = window.Features.Browser.IsContextMenuEnabled;

Media and Permissions

Media autoplay

builder.SetMediaAutoplayEnabled(true);
window.Features.Browser.EnableMediaAutoplay(true);

Camera and microphone

builder
.SetMediaStreamEnabled(true) // Allow camera/microphone
.GrantBrowserPermissions(); // Auto-grant permissions (Windows only)

File system access

builder.SetFileSystemAccessEnabled(true);

Clipboard access

Allow JavaScript to read/write the clipboard:

builder.SetJavascriptClipboardAccessEnabled(true);

Web Security

Toggle browser-level web security (same-origin policy, CORS checks):

builder.SetWebSecurityEnabled(false); // Disable (not recommended in production)
window.Features.Browser.EnableWebSecurity(true); // Re-enable at runtime
warning

Disabling web security disables same-origin policy and CORS checks. Only do this in development or for fully trusted local content. See also Trusted Origins for a more targeted approach.

URI Security Policy (Trusted Origins)

InfiniFrame validates URI origins independently from browser WebSecurity toggles. For embedded apps (including BlazorWebView), trust external module/CDN origins explicitly:

builder
.AddTrustedOrigin("https://xyz")
.AddTrustedOrigin("https://cdn.jsdelivr.net")
.AddTrustedOrigin("https://unpkg.com");

To replace the trusted list entirely:

builder.SetTrustedOrigins("https://xyz", "https://cdn.jsdelivr.net");

To trust all origins (high risk, not recommended in production):

builder.SetTrustAllOrigins(true);

User Agent

Set a custom user agent string to identify your application:

builder.SetUserAgent("MyApp/1.0");
window.Features.Browser.SetUserAgent("MyApp/2.0");
string? ua = window.Features.Browser.UserAgent;

Status Bar

EnableStatusBar(bool) controls whether the URL hover status indicator (status bar) is shown at the bottom-left of the browser window when hovering over a hyperlink.

  • Default: true (status bar shown)
  • Platform support: Windows only (maps to ICoreWebView2Settings.IsStatusBarEnabled)
  • Linux/macOS: The flag is accepted and stored, but has no native effect
builder.EnableStatusBar(false); // fluent extension
window.Features.Browser.EnableStatusBar(false); // direct
bool enabled = window.Features.Browser.IsStatusBarEnabled; // default: true

Certificate Error Handling

EnableIgnoreCertificateErrors(bool) controls whether SSL/TLS certificate errors are ignored by the browser engine.

warning

Enabling this feature bypasses SSL/TLS certificate validation. Only use in controlled development/test scenarios. Never enable in production applications handling sensitive data.

  • This is a startup-only configuration and cannot be changed at runtime.
  • The builder default is true; the native layer default is false.
  • Platform-specific behavior:
    • Windows: Passes --ignore-certificate-errors Chromium flag to WebView2
    • Linux: Sets WEBKIT_TLS_ERRORS_POLICY_IGNORE on WebKit data manager
    • macOS: Trusts all server certificates in didReceiveAuthenticationChallenge: delegate

Browser Shortcuts

Control whether browser keyboard shortcuts (Ctrl+T, Ctrl+W, F5, etc.) are enabled:

builder.EnableBrowserShortcuts(false); // Builder
window.Features.Browser.EnableBrowserShortcuts(true); // Runtime
bool enabled = window.Features.Browser.IsBrowserShortcutsEnabled;

Platform-Specific Browser Parameters

The SetBrowserControlInitParameters method passes raw flags to the underlying browser engine:

// Windows: space-separated Chromium flags
builder.SetBrowserControlInitParameters("--disable-gpu --no-sandbox")

// Linux: JSON object matching WebKit2GTK settings
builder.SetBrowserControlInitParameters("{ \"enable_developer_extras\": true }")

// macOS: JSON object matching WKPreferences keys
builder.SetBrowserControlInitParameters("{ \"minimumFontSize\": 12 }")

For remote debugging, prefer SetRemoteDebuggingPort(...) over raw flags.

WebView2 Runtime Path (Windows)

For a bundled fixed-version WebView2 runtime on Windows, set its extracted directory on the builder before Build():

builder.SetWebView2RuntimePath(Path.Combine(AppContext.BaseDirectory, "WebView2Runtime"));

The path applies only to that window. It is ignored on Linux and macOS.

Clearing Auto-fill Data

window.Features.Browser.ClearBrowserAutoFill();

See Also