diff --git a/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.19041/PublicAPI.Unshipped.txt b/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.19041/PublicAPI.Unshipped.txt index f3b5d5ef555b..348e8a524d70 100644 --- a/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.19041/PublicAPI.Unshipped.txt +++ b/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.19041/PublicAPI.Unshipped.txt @@ -33,8 +33,6 @@ Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.Selector.set -> void Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.RootComponentsCollection(Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents) -> void -Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager -Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager.WinUIWebViewManager(Microsoft.UI.Xaml.Controls.WebView2! webview, System.IServiceProvider! services, Microsoft.AspNetCore.Components.Dispatcher! dispatcher, Microsoft.Extensions.FileProviders.IFileProvider! fileProvider, Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents, string! hostPageRelativePath, string! contentRootDir, Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! webViewHandler) -> void Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri! Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.get -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy @@ -43,12 +41,9 @@ Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.CancelLoad = 2 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenExternally = 0 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenInWebView = 1 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy -Microsoft.AspNetCore.Components.WebView.WebView2.WebView2WebViewManager Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.CreatePlatformView() -> Microsoft.UI.Xaml.Controls.WebView2! override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.DisconnectHandler(Microsoft.UI.Xaml.Controls.WebView2! platformView) -> void -override Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager.HandleWebResourceRequest(Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs! eventArgs) -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager.QueueBlazorStart() -> void static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapHostPage(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapNotifyUrlLoading(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapRootComponents(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void diff --git a/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.20348/PublicAPI.Unshipped.txt b/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.20348/PublicAPI.Unshipped.txt index f3b5d5ef555b..348e8a524d70 100644 --- a/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.20348/PublicAPI.Unshipped.txt +++ b/src/BlazorWebView/src/Maui/PublicAPI/net6.0-windows10.0.20348/PublicAPI.Unshipped.txt @@ -33,8 +33,6 @@ Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.Selector.set -> void Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.RootComponentsCollection(Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents) -> void -Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager -Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager.WinUIWebViewManager(Microsoft.UI.Xaml.Controls.WebView2! webview, System.IServiceProvider! services, Microsoft.AspNetCore.Components.Dispatcher! dispatcher, Microsoft.Extensions.FileProviders.IFileProvider! fileProvider, Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents, string! hostPageRelativePath, string! contentRootDir, Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! webViewHandler) -> void Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri! Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.get -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy @@ -43,12 +41,9 @@ Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.CancelLoad = 2 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenExternally = 0 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenInWebView = 1 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy -Microsoft.AspNetCore.Components.WebView.WebView2.WebView2WebViewManager Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.CreatePlatformView() -> Microsoft.UI.Xaml.Controls.WebView2! override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.DisconnectHandler(Microsoft.UI.Xaml.Controls.WebView2! platformView) -> void -override Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager.HandleWebResourceRequest(Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs! eventArgs) -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Components.WebView.Maui.WinUIWebViewManager.QueueBlazorStart() -> void static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapHostPage(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapNotifyUrlLoading(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapRootComponents(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void diff --git a/src/BlazorWebView/src/Maui/Windows/WinUIWebViewManager.cs b/src/BlazorWebView/src/Maui/Windows/WinUIWebViewManager.cs index 385214502e7d..9154c07ec663 100644 --- a/src/BlazorWebView/src/Maui/Windows/WinUIWebViewManager.cs +++ b/src/BlazorWebView/src/Maui/Windows/WinUIWebViewManager.cs @@ -7,7 +7,6 @@ using Microsoft.Extensions.FileProviders; using Microsoft.Web.WebView2.Core; using Windows.ApplicationModel; -using Windows.Storage; using Windows.Storage.Streams; using WebView2Control = Microsoft.UI.Xaml.Controls.WebView2; @@ -17,7 +16,7 @@ namespace Microsoft.AspNetCore.Components.WebView.Maui /// An implementation of that uses the Edge WebView2 browser control /// to render web content in WinUI applications. /// - public class WinUIWebViewManager : WebView2WebViewManager + internal class WinUIWebViewManager : WebView2WebViewManager { private readonly WebView2Control _webview; private readonly string _hostPageRelativePath; @@ -36,7 +35,6 @@ static WinUIWebViewManager() } } -#pragma warning disable RS0022 /// /// Initializes a new instance of /// @@ -63,7 +61,6 @@ public WinUIWebViewManager( _hostPageRelativePath = hostPageRelativePath; _contentRootDir = contentRootDir; } -#pragma warning restore RS0022 /// protected override async Task HandleWebResourceRequest(CoreWebView2WebResourceRequestedEventArgs eventArgs) diff --git a/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs b/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs index 353404b1e4fa..26fd2bde968e 100644 --- a/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs +++ b/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs @@ -25,9 +25,9 @@ public static class BlazorWebViewServiceCollectionExtensions /// The . /// The . #if WEBVIEW2_WINFORMS - public static IServiceCollection AddWindowsFormsBlazorWebView(this IServiceCollection services) + public static IWindowsFormsBlazorWebViewBuilder AddWindowsFormsBlazorWebView(this IServiceCollection services) #elif WEBVIEW2_WPF - public static IServiceCollection AddWpfBlazorWebView(this IServiceCollection services) + public static IWpfBlazorWebViewBuilder AddWpfBlazorWebView(this IServiceCollection services) #elif WEBVIEW2_MAUI public static IServiceCollection AddMauiBlazorWebView(this IServiceCollection services) #else @@ -39,12 +39,14 @@ public static IServiceCollection AddMauiBlazorWebView(this IServiceCollection se #if WEBVIEW2_MAUI services.TryAddSingleton(); services.ConfigureMauiHandlers(static handlers => handlers.AddHandler()); + return services; #elif WEBVIEW2_WINFORMS services.TryAddSingleton(); + return new WindowsFormsBlazorWebViewBuilder(services); #elif WEBVIEW2_WPF services.TryAddSingleton(); + return new WpfBlazorWebViewBuilder(services); #endif - return services; } /// diff --git a/src/BlazorWebView/src/SharedSource/WebView2WebViewManager.cs b/src/BlazorWebView/src/SharedSource/WebView2WebViewManager.cs index bc025c65c44b..1cba9ae3c634 100644 --- a/src/BlazorWebView/src/SharedSource/WebView2WebViewManager.cs +++ b/src/BlazorWebView/src/SharedSource/WebView2WebViewManager.cs @@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Components.WebView.WebView2 /// An implementation of that uses the Edge WebView2 browser control /// to render web content. /// - public class WebView2WebViewManager : WebViewManager + internal class WebView2WebViewManager : WebViewManager { // Using an IP address means that WebView2 doesn't wait for any DNS resolution, // making it substantially faster. Note that this isn't real HTTP traffic, since @@ -65,7 +65,7 @@ public class WebView2WebViewManager : WebViewManager private readonly Task _webviewReadyTask; #if WEBVIEW2_WINFORMS || WEBVIEW2_WPF - private protected CoreWebView2Environment _coreWebView2Environment; + private protected CoreWebView2Environment? _coreWebView2Environment; private readonly Action _urlLoading; private readonly Action _blazorWebViewInitializing; private readonly Action _blazorWebViewInitialized; @@ -273,7 +273,7 @@ protected virtual Task HandleWebResourceRequest(CoreWebView2WebResourceRequested { var headerString = GetHeaderString(headers); - eventArgs.Response = _coreWebView2Environment.CreateWebResourceResponse(content, statusCode, statusMessage, headerString); + eventArgs.Response = _coreWebView2Environment!.CreateWebResourceResponse(content, statusCode, statusMessage, headerString); } #elif WEBVIEW2_MAUI // No-op here because all the work is done in the derived WinUIWebViewManager @@ -288,7 +288,7 @@ protected virtual void QueueBlazorStart() { } - private void CoreWebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs args) + private void CoreWebView2_NavigationStarting(object? sender, CoreWebView2NavigationStartingEventArgs args) { if (Uri.TryCreate(args.Uri, UriKind.RelativeOrAbsolute, out var uri)) { @@ -309,7 +309,7 @@ private void CoreWebView2_NavigationStarting(object sender, CoreWebView2Navigati } } - private void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs args) + private void CoreWebView2_NewWindowRequested(object? sender, CoreWebView2NewWindowRequestedEventArgs args) { // Intercept _blank target tags to always open in device browser. // The ExternalLinkCallback is not invoked. @@ -349,7 +349,7 @@ private void ApplyDefaultWebViewSettings(BlazorWebViewDeveloperTools devTools) } #if WEBVIEW2_WINFORMS || WEBVIEW2_WPF - private static string GetWebView2UserDataFolder() + private static string? GetWebView2UserDataFolder() { if (Assembly.GetEntryAssembly() is { } mainAssembly) { diff --git a/src/BlazorWebView/src/WindowsForms/BlazorWebView.cs b/src/BlazorWebView/src/WindowsForms/BlazorWebView.cs index 3828d82ebec9..213b562d6768 100644 --- a/src/BlazorWebView/src/WindowsForms/BlazorWebView.cs +++ b/src/BlazorWebView/src/WindowsForms/BlazorWebView.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Specialized; using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Reflection; @@ -21,9 +22,9 @@ namespace Microsoft.AspNetCore.Components.WebView.WindowsForms public class BlazorWebView : ContainerControl { private readonly WebView2Control _webview; - private WebView2WebViewManager _webviewManager; - private string _hostPage; - private IServiceProvider _services; + private WebView2WebViewManager? _webviewManager; + private string? _hostPage; + private IServiceProvider? _services; /// /// Creates a new instance of . @@ -52,12 +53,6 @@ public BlazorWebView() [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public WebView2Control WebView => _webview; - /// - /// Returns the current used by this control. This property is null - /// until after the XYZ event is raised. - /// - public WebView2WebViewManager WebViewManager => _webviewManager; - private WindowsFormsDispatcher ComponentsDispatcher { get; } /// @@ -74,7 +69,7 @@ protected override void OnCreateControl() /// [Category("Behavior")] [Description(@"Path to the host page within the application's static files. Example: wwwroot\index.html.")] - public string HostPage + public string? HostPage { get => _hostPage; set @@ -102,9 +97,10 @@ public string HostPage /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + [DisallowNull] public IServiceProvider Services { - get => _services; + get => _services!; set { _services = value; @@ -118,21 +114,21 @@ public IServiceProvider Services /// [Category("Action")] [Description("Allows customizing how links are opened. By default, opens internal links in the webview and external links in an external app.")] - public EventHandler UrlLoading; + public EventHandler? UrlLoading; /// /// Allows customizing the web view before it is created. /// [Category("Action")] [Description("Allows customizing the web view before it is created.")] - public EventHandler BlazorWebViewInitializing; + public EventHandler? BlazorWebViewInitializing; /// /// Allows customizing the web view after it is created. /// [Category("Action")] [Description("Allows customizing the web view after it is created.")] - public EventHandler BlazorWebViewInitialized; + public EventHandler? BlazorWebViewInitialized; private void OnHostPagePropertyChanged() => StartWebViewCoreIfPossible(); @@ -165,14 +161,14 @@ private void StartWebViewCoreIfPossible() var entryAssemblyLocation = Assembly.GetEntryAssembly()?.Location; if (!string.IsNullOrEmpty(entryAssemblyLocation)) { - appRootDir = Path.GetDirectoryName(entryAssemblyLocation); + appRootDir = Path.GetDirectoryName(entryAssemblyLocation)!; } else { appRootDir = Environment.CurrentDirectory; } - var hostPageFullPath = Path.GetFullPath(Path.Combine(appRootDir, HostPage)); - var contentRootDirFullPath = Path.GetDirectoryName(hostPageFullPath); + var hostPageFullPath = Path.GetFullPath(Path.Combine(appRootDir, HostPage!)); // HostPage is nonnull because RequiredStartupPropertiesSet is checked above + var contentRootDirFullPath = Path.GetDirectoryName(hostPageFullPath)!; var hostPageRelativePath = Path.GetRelativePath(contentRootDirFullPath, hostPageFullPath); var fileProvider = CreateFileProvider(contentRootDirFullPath); @@ -196,7 +192,7 @@ private void StartWebViewCoreIfPossible() _webviewManager.Navigate("/"); } - private void HandleRootComponentsCollectionChanged(object sender, NotifyCollectionChangedEventArgs eventArgs) + private void HandleRootComponentsCollectionChanged(object? sender, NotifyCollectionChangedEventArgs eventArgs) { // If we haven't initialized yet, this is a no-op if (_webviewManager != null) @@ -204,8 +200,8 @@ private void HandleRootComponentsCollectionChanged(object sender, NotifyCollecti // Dispatch because this is going to be async, and we want to catch any errors _ = ComponentsDispatcher.InvokeAsync(async () => { - var newItems = eventArgs.NewItems.Cast(); - var oldItems = eventArgs.OldItems.Cast(); + var newItems = (eventArgs.NewItems ?? Array.Empty()).Cast(); + var oldItems = (eventArgs.OldItems ?? Array.Empty()).Cast(); foreach (var item in newItems.Except(oldItems)) { diff --git a/src/BlazorWebView/src/WindowsForms/IWindowsFormsBlazorWebViewBuilder.cs b/src/BlazorWebView/src/WindowsForms/IWindowsFormsBlazorWebViewBuilder.cs new file mode 100644 index 000000000000..e69d8264ee37 --- /dev/null +++ b/src/BlazorWebView/src/WindowsForms/IWindowsFormsBlazorWebViewBuilder.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Components.WebView.WindowsForms +{ + /// + /// A builder for WindowsForms Blazor WebViews. + /// + public interface IWindowsFormsBlazorWebViewBuilder + { + /// + /// Gets the builder service collection. + /// + IServiceCollection Services { get; } + } +} diff --git a/src/BlazorWebView/src/WindowsForms/Microsoft.AspNetCore.Components.WebView.WindowsForms.csproj b/src/BlazorWebView/src/WindowsForms/Microsoft.AspNetCore.Components.WebView.WindowsForms.csproj index 9cbddf4af5aa..0981c7435962 100644 --- a/src/BlazorWebView/src/WindowsForms/Microsoft.AspNetCore.Components.WebView.WindowsForms.csproj +++ b/src/BlazorWebView/src/WindowsForms/Microsoft.AspNetCore.Components.WebView.WindowsForms.csproj @@ -9,7 +9,7 @@ Build Windows Forms applications with Blazor and WebView2. $(DefineConstants);WEBVIEW2_WINFORMS true - disable + enable true diff --git a/src/BlazorWebView/src/WindowsForms/PublicAPI.Shipped.txt b/src/BlazorWebView/src/WindowsForms/PublicAPI.Shipped.txt index e69de29bb2d1..7dc5c58110bf 100644 --- a/src/BlazorWebView/src/WindowsForms/PublicAPI.Shipped.txt +++ b/src/BlazorWebView/src/WindowsForms/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/BlazorWebView/src/WindowsForms/PublicAPI.Unshipped.txt b/src/BlazorWebView/src/WindowsForms/PublicAPI.Unshipped.txt index 41ce41b85193..a65d1a9361b1 100644 --- a/src/BlazorWebView/src/WindowsForms/PublicAPI.Unshipped.txt +++ b/src/BlazorWebView/src/WindowsForms/PublicAPI.Unshipped.txt @@ -1,50 +1,51 @@ -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs +#nullable enable +Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.BlazorWebViewInitializedEventArgs() -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Microsoft.Web.WebView2.WinForms.WebView2 Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BlazorWebViewInitializingEventArgs() -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.get -> string -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.set -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.get -> Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.set -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.get -> string -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.set -> void Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs -Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri +Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri! Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.get -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.set -> void Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.CancelLoad = 2 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenExternally = 0 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenInWebView = 1 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy -Microsoft.AspNetCore.Components.WebView.WebView2.WebView2WebViewManager Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.BlazorWebView() -> void -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.BlazorWebViewInitialized -> System.EventHandler -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.BlazorWebViewInitializing -> System.EventHandler -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.HostPage.get -> string +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.BlazorWebViewInitialized -> System.EventHandler? +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.BlazorWebViewInitializing -> System.EventHandler? +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.HostPage.get -> string? Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.HostPage.set -> void -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.RootComponents.get -> Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.Services.get -> System.IServiceProvider +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.RootComponents.get -> Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection! +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.Services.get -> System.IServiceProvider! Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.Services.set -> void -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.UrlLoading -> System.EventHandler -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.WebView.get -> Microsoft.Web.WebView2.WinForms.WebView2 -Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.WebViewManager.get -> Microsoft.AspNetCore.Components.WebView.WebView2.WebView2WebViewManager +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.UrlLoading -> System.EventHandler? +Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.WebView.get -> Microsoft.Web.WebView2.WinForms.WebView2! +Microsoft.AspNetCore.Components.WebView.WindowsForms.IWindowsFormsBlazorWebViewBuilder +Microsoft.AspNetCore.Components.WebView.WindowsForms.IWindowsFormsBlazorWebViewBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent -Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.ComponentType.get -> System.Type -Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.Parameters.get -> System.Collections.Generic.IDictionary -Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.RootComponent(string selector, System.Type componentType, System.Collections.Generic.IDictionary parameters) -> void -Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.Selector.get -> string +Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.ComponentType.get -> System.Type! +Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.Parameters.get -> System.Collections.Generic.IDictionary? +Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.RootComponent(string! selector, System.Type! componentType, System.Collections.Generic.IDictionary? parameters) -> void +Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponent.Selector.get -> string! Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentCollectionExtensions Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection -Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore +Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection.RootComponentsCollection() -> void Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions -override Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.CreateControlsInstance() -> System.Windows.Forms.Control.ControlCollection +override Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.CreateControlsInstance() -> System.Windows.Forms.Control.ControlCollection! override Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.Dispose(bool disposing) -> void override Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.OnCreateControl() -> void -static Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentCollectionExtensions.Add(this Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection components, string selector, System.Collections.Generic.IDictionary parameters = null) -> void -static Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentCollectionExtensions.Remove(this Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection components, string selector) -> void -static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddBlazorWebViewDeveloperTools(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection -static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddWindowsFormsBlazorWebView(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection -virtual Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.CreateFileProvider(string contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider \ No newline at end of file +static Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentCollectionExtensions.Add(this Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection! components, string! selector, System.Collections.Generic.IDictionary? parameters = null) -> void +static Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentCollectionExtensions.Remove(this Microsoft.AspNetCore.Components.WebView.WindowsForms.RootComponentsCollection! components, string! selector) -> void +static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddBlazorWebViewDeveloperTools(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddWindowsFormsBlazorWebView(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Components.WebView.WindowsForms.IWindowsFormsBlazorWebViewBuilder! +virtual Microsoft.AspNetCore.Components.WebView.WindowsForms.BlazorWebView.CreateFileProvider(string! contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider! +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Microsoft.Web.WebView2.WinForms.WebView2 +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.get -> string +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.set -> void +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.get -> Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.set -> void +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.get -> string +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.set -> void diff --git a/src/BlazorWebView/src/WindowsForms/RootComponent.cs b/src/BlazorWebView/src/WindowsForms/RootComponent.cs index 33339a7bdb80..459f54fbc9e9 100644 --- a/src/BlazorWebView/src/WindowsForms/RootComponent.cs +++ b/src/BlazorWebView/src/WindowsForms/RootComponent.cs @@ -5,8 +5,6 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Components.WebView.WebView2; -using Microsoft.Web.WebView2.Core; -using WebView2Control = Microsoft.Web.WebView2.WinForms.WebView2; namespace Microsoft.AspNetCore.Components.WebView.WindowsForms { @@ -21,7 +19,7 @@ public class RootComponent /// The CSS selector string that specifies where in the document the component should be placed. This must be unique among the root components within the . /// The type of the root component. This type must implement . /// An optional dictionary of parameters to pass to the root component. - public RootComponent(string selector, Type componentType, IDictionary parameters) + public RootComponent(string selector, Type componentType, IDictionary? parameters) { if (string.IsNullOrWhiteSpace(selector)) { @@ -47,7 +45,7 @@ public RootComponent(string selector, Type componentType, IDictionary /// Gets an optional dictionary of parameters to pass to the root component. /// - public IDictionary Parameters { get; } + public IDictionary? Parameters { get; } internal Task AddToWebViewManagerAsync(WebViewManager webViewManager) { diff --git a/src/BlazorWebView/src/WindowsForms/RootComponentCollectionExtensions.cs b/src/BlazorWebView/src/WindowsForms/RootComponentCollectionExtensions.cs index 7d21e34e42b7..466425cc5c99 100644 --- a/src/BlazorWebView/src/WindowsForms/RootComponentCollectionExtensions.cs +++ b/src/BlazorWebView/src/WindowsForms/RootComponentCollectionExtensions.cs @@ -20,7 +20,7 @@ public static class RootComponentCollectionExtensions /// The collection to which the component should be added. /// The selector to which the component will be associated. /// The optional creation parameters for the component. - public static void Add(this RootComponentsCollection components, string selector, IDictionary parameters = null) + public static void Add(this RootComponentsCollection components, string selector, IDictionary? parameters = null) where TComponent : IComponent { components.Add(new RootComponent(selector, typeof(TComponent), parameters)); diff --git a/src/BlazorWebView/src/WindowsForms/WindowsFormsBlazorWebViewBuilder.cs b/src/BlazorWebView/src/WindowsForms/WindowsFormsBlazorWebViewBuilder.cs new file mode 100644 index 000000000000..d8fbee93bab0 --- /dev/null +++ b/src/BlazorWebView/src/WindowsForms/WindowsFormsBlazorWebViewBuilder.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Components.WebView.WindowsForms +{ + internal class WindowsFormsBlazorWebViewBuilder : IWindowsFormsBlazorWebViewBuilder + { + public IServiceCollection Services { get; } + + public WindowsFormsBlazorWebViewBuilder(IServiceCollection services) + { + Services = services; + } + } +} diff --git a/src/BlazorWebView/src/Wpf/BlazorWebView.cs b/src/BlazorWebView/src/Wpf/BlazorWebView.cs index b23416dc595b..f746964bb9e1 100644 --- a/src/BlazorWebView/src/Wpf/BlazorWebView.cs +++ b/src/BlazorWebView/src/Wpf/BlazorWebView.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.ObjectModel; using System.Collections.Specialized; using System.ComponentModel; using System.IO; @@ -12,7 +11,6 @@ using System.Windows; using System.Windows.Controls; using Microsoft.AspNetCore.Components.WebView.WebView2; -using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using WebView2Control = Microsoft.Web.WebView2.Wpf.WebView2; @@ -77,8 +75,8 @@ public class BlazorWebView : Control, IAsyncDisposable #endregion private const string WebViewTemplateChildName = "WebView"; - private WebView2Control _webview; - private WebView2WebViewManager _webviewManager; + private WebView2Control? _webview; + private WebView2WebViewManager? _webviewManager; private bool _isDisposed; /// @@ -105,7 +103,7 @@ public BlazorWebView() /// is controlled by the that is hosting it. /// [Browsable(false)] - public WebView2Control WebView => _webview; + public WebView2Control WebView => _webview!; /// /// Path to the host page within the application's static files. For example, wwwroot\index.html. @@ -213,20 +211,20 @@ private void StartWebViewCoreIfPossible() var entryAssemblyLocation = Assembly.GetEntryAssembly()?.Location; if (!string.IsNullOrEmpty(entryAssemblyLocation)) { - appRootDir = Path.GetDirectoryName(entryAssemblyLocation); + appRootDir = Path.GetDirectoryName(entryAssemblyLocation)!; } else { appRootDir = Environment.CurrentDirectory; } var hostPageFullPath = Path.GetFullPath(Path.Combine(appRootDir, HostPage)); - var contentRootDirFullPath = Path.GetDirectoryName(hostPageFullPath); + var contentRootDirFullPath = Path.GetDirectoryName(hostPageFullPath)!; var hostPageRelativePath = Path.GetRelativePath(contentRootDirFullPath, hostPageFullPath); var fileProvider = CreateFileProvider(contentRootDirFullPath); _webviewManager = new WebView2WebViewManager( - _webview, + _webview!, Services, ComponentsDispatcher, fileProvider, @@ -246,7 +244,7 @@ private void StartWebViewCoreIfPossible() private WpfDispatcher ComponentsDispatcher { get; } - private void HandleRootComponentsCollectionChanged(object sender, NotifyCollectionChangedEventArgs eventArgs) + private void HandleRootComponentsCollectionChanged(object? sender, NotifyCollectionChangedEventArgs eventArgs) { CheckDisposed(); @@ -256,8 +254,8 @@ private void HandleRootComponentsCollectionChanged(object sender, NotifyCollecti // Dispatch because this is going to be async, and we want to catch any errors _ = ComponentsDispatcher.InvokeAsync(async () => { - var newItems = eventArgs.NewItems.Cast(); - var oldItems = eventArgs.OldItems.Cast(); + var newItems = (eventArgs.NewItems ?? Array.Empty()).Cast(); + var oldItems = (eventArgs.OldItems ?? Array.Empty()).Cast(); foreach (var item in newItems.Except(oldItems)) { diff --git a/src/BlazorWebView/src/Wpf/IWpfBlazorWebViewBuilder.cs b/src/BlazorWebView/src/Wpf/IWpfBlazorWebViewBuilder.cs new file mode 100644 index 000000000000..e8f17c81cc33 --- /dev/null +++ b/src/BlazorWebView/src/Wpf/IWpfBlazorWebViewBuilder.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Components.WebView.Wpf +{ + /// + /// A builder for WPF Blazor WebViews. + /// + public interface IWpfBlazorWebViewBuilder + { + /// + /// Gets the builder service collection. + /// + IServiceCollection Services { get; } + } +} diff --git a/src/BlazorWebView/src/Wpf/Microsoft.AspNetCore.Components.WebView.Wpf.csproj b/src/BlazorWebView/src/Wpf/Microsoft.AspNetCore.Components.WebView.Wpf.csproj index 4cd8febbce92..34741ab3a6b3 100644 --- a/src/BlazorWebView/src/Wpf/Microsoft.AspNetCore.Components.WebView.Wpf.csproj +++ b/src/BlazorWebView/src/Wpf/Microsoft.AspNetCore.Components.WebView.Wpf.csproj @@ -9,7 +9,7 @@ Build WPF applications with Blazor and WebView2. $(DefineConstants);WEBVIEW2_WPF true - disable + enable true diff --git a/src/BlazorWebView/src/Wpf/PublicAPI.Shipped.txt b/src/BlazorWebView/src/Wpf/PublicAPI.Shipped.txt index e69de29bb2d1..7dc5c58110bf 100644 --- a/src/BlazorWebView/src/Wpf/PublicAPI.Shipped.txt +++ b/src/BlazorWebView/src/Wpf/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/BlazorWebView/src/Wpf/PublicAPI.Unshipped.txt b/src/BlazorWebView/src/Wpf/PublicAPI.Unshipped.txt index 5b1a9eea0d5c..5feec2cf3564 100644 --- a/src/BlazorWebView/src/Wpf/PublicAPI.Unshipped.txt +++ b/src/BlazorWebView/src/Wpf/PublicAPI.Unshipped.txt @@ -1,59 +1,61 @@ -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs +#nullable enable +Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.BlazorWebViewInitializedEventArgs() -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Microsoft.Web.WebView2.Wpf.WebView2 Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BlazorWebViewInitializingEventArgs() -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.get -> string -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.set -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.get -> Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.set -> void -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.get -> string -Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.set -> void Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs -Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri +Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri! Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.get -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.set -> void Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.CancelLoad = 2 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenExternally = 0 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenInWebView = 1 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy -Microsoft.AspNetCore.Components.WebView.WebView2.WebView2WebViewManager Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebView() -> void -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitialized.get -> System.EventHandler +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitialized.get -> System.EventHandler! Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitialized.set -> void -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializing.get -> System.EventHandler +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializing.get -> System.EventHandler! Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializing.set -> void Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.DisposeAsync() -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.HostPage.get -> string +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.HostPage.get -> string! Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.HostPage.set -> void -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.RootComponents.get -> Microsoft.AspNetCore.Components.WebView.Wpf.RootComponentsCollection -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.Services.get -> System.IServiceProvider +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.RootComponents.get -> Microsoft.AspNetCore.Components.WebView.Wpf.RootComponentsCollection! +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.Services.get -> System.IServiceProvider! Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.Services.set -> void -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.UrlLoading.get -> System.EventHandler +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.UrlLoading.get -> System.EventHandler! Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.UrlLoading.set -> void -Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.WebView.get -> Microsoft.Web.WebView2.Wpf.WebView2 +Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.WebView.get -> Microsoft.Web.WebView2.Wpf.WebView2! +Microsoft.AspNetCore.Components.WebView.Wpf.IWpfBlazorWebViewBuilder +Microsoft.AspNetCore.Components.WebView.Wpf.IWpfBlazorWebViewBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent -Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.ComponentType.get -> System.Type +Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.ComponentType.get -> System.Type! Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.ComponentType.set -> void -Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.Parameters.get -> System.Collections.Generic.IDictionary +Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.Parameters.get -> System.Collections.Generic.IDictionary? Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.Parameters.set -> void Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.RootComponent() -> void -Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.Selector.get -> string +Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.Selector.get -> string! Microsoft.AspNetCore.Components.WebView.Wpf.RootComponent.Selector.set -> void Microsoft.AspNetCore.Components.WebView.Wpf.RootComponentsCollection -Microsoft.AspNetCore.Components.WebView.Wpf.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore +Microsoft.AspNetCore.Components.WebView.Wpf.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! Microsoft.AspNetCore.Components.WebView.Wpf.RootComponentsCollection.RootComponentsCollection() -> void Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions override Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.OnApplyTemplate() -> void -override Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.OnInitialized(System.EventArgs e) -> void -static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddBlazorWebViewDeveloperTools(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection -static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddWpfBlazorWebView(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection -static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializedProperty -> System.Windows.DependencyProperty -static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializingProperty -> System.Windows.DependencyProperty -static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.HostPageProperty -> System.Windows.DependencyProperty -static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.RootComponentsProperty -> System.Windows.DependencyProperty -static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.ServicesProperty -> System.Windows.DependencyProperty -static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.UrlLoadingProperty -> System.Windows.DependencyProperty -virtual Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.CreateFileProvider(string contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider -virtual Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.DisposeAsyncCore() -> System.Threading.Tasks.ValueTask \ No newline at end of file +override Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.OnInitialized(System.EventArgs! e) -> void +static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddBlazorWebViewDeveloperTools(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddWpfBlazorWebView(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Components.WebView.Wpf.IWpfBlazorWebViewBuilder! +static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializedProperty -> System.Windows.DependencyProperty! +static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.BlazorWebViewInitializingProperty -> System.Windows.DependencyProperty! +static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.HostPageProperty -> System.Windows.DependencyProperty! +static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.RootComponentsProperty -> System.Windows.DependencyProperty! +static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.ServicesProperty -> System.Windows.DependencyProperty! +static readonly Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.UrlLoadingProperty -> System.Windows.DependencyProperty! +virtual Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.CreateFileProvider(string! contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider! +virtual Microsoft.AspNetCore.Components.WebView.Wpf.BlazorWebView.DisposeAsyncCore() -> System.Threading.Tasks.ValueTask +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Microsoft.Web.WebView2.Wpf.WebView2 +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.get -> string +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BrowserExecutableFolder.set -> void +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.get -> Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.EnvironmentOptions.set -> void +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.get -> string +~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.UserDataFolder.set -> void diff --git a/src/BlazorWebView/src/Wpf/RootComponent.cs b/src/BlazorWebView/src/Wpf/RootComponent.cs index 7acc75f56a37..c119af42a054 100644 --- a/src/BlazorWebView/src/Wpf/RootComponent.cs +++ b/src/BlazorWebView/src/Wpf/RootComponent.cs @@ -17,17 +17,17 @@ public class RootComponent /// Gets or sets the CSS selector string that specifies where in the document the component should be placed. /// This must be unique among the root components within the . /// - public string Selector { get; set; } + public string Selector { get; set; } = default!; /// /// Gets or sets the type of the root component. This type must implement . /// - public Type ComponentType { get; set; } + public Type ComponentType { get; set; } = default!; /// /// Gets or sets an optional dictionary of parameters to pass to the root component. /// - public IDictionary Parameters { get; set; } + public IDictionary? Parameters { get; set; } internal Task AddToWebViewManagerAsync(WebViewManager webViewManager) { diff --git a/src/BlazorWebView/src/Wpf/WpfBlazorWebViewBuilder.cs b/src/BlazorWebView/src/Wpf/WpfBlazorWebViewBuilder.cs new file mode 100644 index 000000000000..ed53f8129773 --- /dev/null +++ b/src/BlazorWebView/src/Wpf/WpfBlazorWebViewBuilder.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Components.WebView.Wpf +{ + internal class WpfBlazorWebViewBuilder : IWpfBlazorWebViewBuilder + { + public IServiceCollection Services { get; } + + public WpfBlazorWebViewBuilder(IServiceCollection services) + { + Services = services; + } + } +}