diff --git a/src/Components/Server/src/Circuits/CircuitHost.cs b/src/Components/Server/src/Circuits/CircuitHost.cs index 0f0cbceafb..cf3235f3f5 100644 --- a/src/Components/Server/src/Circuits/CircuitHost.cs +++ b/src/Components/Server/src/Circuits/CircuitHost.cs @@ -13,6 +13,7 @@ using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.JSInterop; +using Microsoft.JSInterop.Infrastructure; namespace Microsoft.AspNetCore.Components.Server.Circuits { @@ -342,7 +343,7 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits { SetCurrentJSRuntime(); Log.BeginInvokeDotNet(_logger, callId, assemblyName, methodIdentifier, dotNetObjectId); - DotNetDispatcher.BeginInvoke(callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson); + DotNetDispatcher.BeginInvokeDotNet(callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson); }); } catch (Exception ex) @@ -377,7 +378,7 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits Log.EndInvokeJSSucceeded(_logger, asyncCall); } - DotNetDispatcher.EndInvoke(arguments); + DotNetDispatcher.EndInvokeJS(arguments); }); } catch (Exception ex) diff --git a/src/Components/Server/src/Circuits/RemoteJSRuntime.cs b/src/Components/Server/src/Circuits/RemoteJSRuntime.cs index 442775d451..9d88588e45 100644 --- a/src/Components/Server/src/Circuits/RemoteJSRuntime.cs +++ b/src/Components/Server/src/Circuits/RemoteJSRuntime.cs @@ -11,7 +11,7 @@ using Microsoft.JSInterop; namespace Microsoft.AspNetCore.Components.Server.Circuits { - internal class RemoteJSRuntime : JSRuntimeBase + internal class RemoteJSRuntime : JSRuntime { private readonly CircuitOptions _options; private readonly ILogger _logger; diff --git a/src/Components/Server/src/Circuits/RemoteRenderer.cs b/src/Components/Server/src/Circuits/RemoteRenderer.cs index a53ee90de3..690adc66cd 100644 --- a/src/Components/Server/src/Circuits/RemoteRenderer.cs +++ b/src/Components/Server/src/Circuits/RemoteRenderer.cs @@ -64,11 +64,11 @@ namespace Microsoft.AspNetCore.Components.Web.Rendering var component = InstantiateComponent(componentType); var componentId = AssignRootComponentId(component); - var attachComponentTask = _jsRuntime.InvokeAsync( + var attachComponentTask = _jsRuntime.InvokeVoidAsync( "Blazor._internal.attachRootComponentToElement", domElementSelector, componentId); - CaptureAsyncExceptions(attachComponentTask); + CaptureAsyncExceptions(attachComponentTask.AsTask()); return RenderRootComponentAsync(componentId); } diff --git a/src/Components/Server/test/Circuits/RemoteRendererTest.cs b/src/Components/Server/test/Circuits/RemoteRendererTest.cs index 11f772e3ca..5505daf3e3 100644 --- a/src/Components/Server/test/Circuits/RemoteRendererTest.cs +++ b/src/Components/Server/test/Circuits/RemoteRendererTest.cs @@ -427,12 +427,8 @@ namespace Microsoft.AspNetCore.Components.Web.Rendering private TestRemoteRenderer GetRemoteRenderer(IServiceProvider serviceProvider, CircuitClientProxy circuitClient = null) { var jsRuntime = new Mock(); - jsRuntime.Setup(r => r.InvokeAsync( - "Blazor._internal.attachRootComponentToElement", - It.IsAny(), - It.IsAny(), - It.IsAny())) - .ReturnsAsync(Task.FromResult(null)); + jsRuntime.Setup(r => r.InvokeAsync("Blazor._internal.attachRootComponentToElement", It.IsAny())) + .ReturnsAsync(new ValueTask((object)null)); return new TestRemoteRenderer( serviceProvider, diff --git a/src/Components/test/testassets/BasicTestApp/InteropComponent.razor b/src/Components/test/testassets/BasicTestApp/InteropComponent.razor index 0ce5137686..01504301dc 100644 --- a/src/Components/test/testassets/BasicTestApp/InteropComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/InteropComponent.razor @@ -72,11 +72,11 @@ var instanceMethodsTarget = new JavaScriptInterop(); Console.WriteLine("Starting interop invocations."); - await JSRuntime.InvokeAsync( + await JSRuntime.InvokeVoidAsync( "jsInteropTests.invokeDotNetInteropMethodsAsync", shouldSupportSyncInterop, - DotNetObjectRef.Create(testDTOTOPassByRef), - DotNetObjectRef.Create(instanceMethodsTarget)); + DotNetObjectReference.Create(testDTOTOPassByRef), + DotNetObjectReference.Create(instanceMethodsTarget)); if (shouldSupportSyncInterop) { @@ -117,7 +117,7 @@ var passDotNetObjectByRefArg = new PassDotNetObjectByRefArgs { StringValue = "My string", - TestDto = DotNetObjectRef.Create(passDotNetObjectByRef), + TestDto = DotNetObjectReference.Create(passDotNetObjectByRef), }; var result = await JSRuntime.InvokeAsync("receiveDotNetObjectByRefAsync", passDotNetObjectByRefArg); ReceiveDotNetObjectByRefAsyncResult["stringValueUpper"] = result.StringValueUpper; @@ -153,7 +153,7 @@ var passDotNetObjectByRefArg = new PassDotNetObjectByRefArgs { StringValue = "My string", - TestDto = DotNetObjectRef.Create(passDotNetObjectByRef), + TestDto = DotNetObjectReference.Create(passDotNetObjectByRef), }; var result = inProcRuntime.Invoke("receiveDotNetObjectByRef", passDotNetObjectByRefArg); ReceiveDotNetObjectByRefResult["stringValueUpper"] = result.StringValueUpper; @@ -165,7 +165,7 @@ { public string StringValue { get; set; } - public DotNetObjectRef TestDto { get; set; } + public DotNetObjectReference TestDto { get; set; } } public class ReceiveDotNetObjectByRefArgs @@ -174,6 +174,6 @@ public int TestDtoNonSerializedValue { get; set; } - public DotNetObjectRef TestDto { get; set; } + public DotNetObjectReference TestDto { get; set; } } } diff --git a/src/Components/test/testassets/BasicTestApp/InteropTest/JavaScriptInterop.cs b/src/Components/test/testassets/BasicTestApp/InteropTest/JavaScriptInterop.cs index f8b8c154e7..ee33e39b48 100644 --- a/src/Components/test/testassets/BasicTestApp/InteropTest/JavaScriptInterop.cs +++ b/src/Components/test/testassets/BasicTestApp/InteropTest/JavaScriptInterop.cs @@ -51,7 +51,7 @@ namespace BasicTestApp.InteropTest public static void VoidWithThreeParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3) + DotNetObjectReference parameter3) { Invocations[nameof(VoidWithThreeParameters)] = new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue() }; } @@ -60,7 +60,7 @@ namespace BasicTestApp.InteropTest public static void VoidWithFourParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4) { Invocations[nameof(VoidWithFourParameters)] = new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue(), parameter4 }; @@ -70,7 +70,7 @@ namespace BasicTestApp.InteropTest public static void VoidWithFiveParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5) { @@ -81,7 +81,7 @@ namespace BasicTestApp.InteropTest public static void VoidWithSixParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6) @@ -93,7 +93,7 @@ namespace BasicTestApp.InteropTest public static void VoidWithSevenParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -106,7 +106,7 @@ namespace BasicTestApp.InteropTest public static void VoidWithEightParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -140,7 +140,7 @@ namespace BasicTestApp.InteropTest public static object[] EchoThreeParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3) + DotNetObjectReference parameter3) { return new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue() }; } @@ -149,7 +149,7 @@ namespace BasicTestApp.InteropTest public static object[] EchoFourParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4) { return new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue(), parameter4 }; @@ -159,7 +159,7 @@ namespace BasicTestApp.InteropTest public static object[] EchoFiveParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5) { @@ -169,7 +169,7 @@ namespace BasicTestApp.InteropTest [JSInvokable] public static object[] EchoSixParameters(ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6) @@ -180,7 +180,7 @@ namespace BasicTestApp.InteropTest [JSInvokable] public static object[] EchoSevenParameters(ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -193,7 +193,7 @@ namespace BasicTestApp.InteropTest public static object[] EchoEightParameters( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -230,7 +230,7 @@ namespace BasicTestApp.InteropTest public static Task VoidWithThreeParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3) + DotNetObjectReference parameter3) { Invocations[nameof(VoidWithThreeParametersAsync)] = new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue() }; return Task.CompletedTask; @@ -240,7 +240,7 @@ namespace BasicTestApp.InteropTest public static Task VoidWithFourParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4) { Invocations[nameof(VoidWithFourParametersAsync)] = new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue(), parameter4 }; @@ -251,7 +251,7 @@ namespace BasicTestApp.InteropTest public static Task VoidWithFiveParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5) { @@ -263,7 +263,7 @@ namespace BasicTestApp.InteropTest public static Task VoidWithSixParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6) @@ -276,7 +276,7 @@ namespace BasicTestApp.InteropTest public static Task VoidWithSevenParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -290,7 +290,7 @@ namespace BasicTestApp.InteropTest public static Task VoidWithEightParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -325,7 +325,7 @@ namespace BasicTestApp.InteropTest public static Task EchoThreeParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3) + DotNetObjectReference parameter3) { return Task.FromResult(new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue() }); } @@ -334,7 +334,7 @@ namespace BasicTestApp.InteropTest public static Task EchoFourParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4) { return Task.FromResult(new object[] { parameter1, parameter2, parameter3.Value.GetNonSerializedValue(), parameter4 }); @@ -344,7 +344,7 @@ namespace BasicTestApp.InteropTest public static Task EchoFiveParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5) { @@ -354,7 +354,7 @@ namespace BasicTestApp.InteropTest [JSInvokable] public static Task EchoSixParametersAsync(ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6) @@ -366,7 +366,7 @@ namespace BasicTestApp.InteropTest public static Task EchoSevenParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -379,7 +379,7 @@ namespace BasicTestApp.InteropTest public static Task EchoEightParametersAsync( ComplexParameter parameter1, byte parameter2, - DotNetObjectRef parameter3, + DotNetObjectReference parameter3, int parameter4, long parameter5, float parameter6, @@ -390,26 +390,26 @@ namespace BasicTestApp.InteropTest } [JSInvokable] - public static Dictionary> ReturnDotNetObjectByRef() + public static Dictionary> ReturnDotNetObjectByRef() { - return new Dictionary> + return new Dictionary> { - { "Some sync instance", DotNetObjectRef.Create(new TestDTO(1000)) } + { "Some sync instance", DotNetObjectReference.Create(new TestDTO(1000)) } }; } [JSInvokable] - public static async Task>> ReturnDotNetObjectByRefAsync() + public static async Task>> ReturnDotNetObjectByRefAsync() { await Task.Yield(); - return new Dictionary> + return new Dictionary> { - { "Some async instance", DotNetObjectRef.Create(new TestDTO(1001)) } + { "Some async instance", DotNetObjectReference.Create(new TestDTO(1001)) } }; } [JSInvokable] - public static int ExtractNonSerializedValue(DotNetObjectRef objectByRef) + public static int ExtractNonSerializedValue(DotNetObjectReference objectByRef) { return objectByRef.Value.GetNonSerializedValue(); } @@ -425,7 +425,7 @@ namespace BasicTestApp.InteropTest ThisTypeName = GetType().Name, StringValueUpper = input.StringValue.ToUpperInvariant(), IncomingByRef = input.DTOByRef.Value.GetNonSerializedValue(), - OutgoingByRef = DotNetObjectRef.Create(new TestDTO(1234)), + OutgoingByRef = DotNetObjectReference.Create(new TestDTO(1234)), }; } @@ -441,7 +441,7 @@ namespace BasicTestApp.InteropTest ThisTypeName = GetType().Name, StringValueUpper = input.StringValue.ToUpperInvariant(), IncomingByRef = input.DTOByRef.Value.GetNonSerializedValue(), - OutgoingByRef = DotNetObjectRef.Create(new TestDTO(1234)), + OutgoingByRef = DotNetObjectReference.Create(new TestDTO(1234)), }; } @@ -449,7 +449,7 @@ namespace BasicTestApp.InteropTest { public string StringValue { get; set; } - public DotNetObjectRef DTOByRef { get; set; } + public DotNetObjectReference DTOByRef { get; set; } } public class InstanceMethodOutput @@ -460,7 +460,7 @@ namespace BasicTestApp.InteropTest public int IncomingByRef { get; set; } - public DotNetObjectRef OutgoingByRef { get; set; } + public DotNetObjectReference OutgoingByRef { get; set; } } } } diff --git a/src/Components/test/testassets/BasicTestApp/LongRunningInterop.razor b/src/Components/test/testassets/BasicTestApp/LongRunningInterop.razor index 3a0283797e..81479decd4 100644 --- a/src/Components/test/testassets/BasicTestApp/LongRunningInterop.razor +++ b/src/Components/test/testassets/BasicTestApp/LongRunningInterop.razor @@ -33,10 +33,10 @@ try { using var cancellationTokenSource = new System.Threading.CancellationTokenSource(TimeSpan.FromSeconds(1)); - await JSRuntime.InvokeAsync( + await JSRuntime.InvokeVoidAsync( "asyncFunctionTakesLongerThanDefaultTimeoutToResolve", - Array.Empty(), - cancellationTokenSource.Token); + cancellationTokenSource.Token, + Array.Empty()); } catch (TaskCanceledException) { diff --git a/src/Components/test/testassets/BasicTestApp/RouterTest/NavigationManagerComponent.razor b/src/Components/test/testassets/BasicTestApp/RouterTest/NavigationManagerComponent.razor index f0c93e6674..c5e422cce1 100644 --- a/src/Components/test/testassets/BasicTestApp/RouterTest/NavigationManagerComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/RouterTest/NavigationManagerComponent.razor @@ -1,6 +1,8 @@ -@inject NavigationManager NavigationManager -@inject Microsoft.JSInterop.IJSRuntime JSRuntime +@using Microsoft.JSInterop @using Microsoft.AspNetCore.Components.Routing + +@inject IJSRuntime JSRuntime +@inject NavigationManager NavigationManager @implements IDisposable @@ -29,7 +31,6 @@ async Task Navigate() { - await JSRuntime.InvokeAsync("navigationManagerNavigate"); + await JSRuntime.InvokeVoidAsync("navigationManagerNavigate"); } } - diff --git a/src/Components/test/testassets/BasicTestApp/ServerReliability/JSInterop.cs b/src/Components/test/testassets/BasicTestApp/ServerReliability/JSInterop.cs index f8a858d4f4..628e0a5dca 100644 --- a/src/Components/test/testassets/BasicTestApp/ServerReliability/JSInterop.cs +++ b/src/Components/test/testassets/BasicTestApp/ServerReliability/JSInterop.cs @@ -6,13 +6,13 @@ namespace BasicTestApp.ServerReliability public class JSInterop { [JSInvokable] - public static DotNetObjectRef CreateImportant() + public static DotNetObjectReference CreateImportant() { - return DotNetObjectRef.Create(new ImportantInformation()); + return DotNetObjectReference.Create(new ImportantInformation()); } [JSInvokable] - public static string ReceiveTrivial(DotNetObjectRef information) + public static string ReceiveTrivial(DotNetObjectReference information) { return information.Value.Message; } diff --git a/src/Components/test/testassets/TestContentPackage/MyPrompt.cs b/src/Components/test/testassets/TestContentPackage/MyPrompt.cs index 8cddeba8c5..fa5ee44ecd 100644 --- a/src/Components/test/testassets/TestContentPackage/MyPrompt.cs +++ b/src/Components/test/testassets/TestContentPackage/MyPrompt.cs @@ -5,7 +5,7 @@ namespace TestContentPackage { public static class MyPrompt { - public static Task Show(IJSRuntime jsRuntime, string message) + public static ValueTask Show(IJSRuntime jsRuntime, string message) { return jsRuntime.InvokeAsync( "TestContentPackage.showPrompt", // Keep in sync with identifiers in the.js file diff --git a/src/Mvc/Mvc.ViewFeatures/src/RazorComponents/UnsupportedJavaScriptRuntime.cs b/src/Mvc/Mvc.ViewFeatures/src/RazorComponents/UnsupportedJavaScriptRuntime.cs index eae107dbe2..bcb36c37a0 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/RazorComponents/UnsupportedJavaScriptRuntime.cs +++ b/src/Mvc/Mvc.ViewFeatures/src/RazorComponents/UnsupportedJavaScriptRuntime.cs @@ -11,14 +11,14 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures { internal class UnsupportedJavaScriptRuntime : IJSRuntime { - public Task InvokeAsync(string identifier, params object[] args) + public ValueTask InvokeAsync(string identifier, CancellationToken cancellationToken, object[] args) { throw new InvalidOperationException("JavaScript interop calls cannot be issued during server-side prerendering, because the page has not yet loaded in the browser. Prerendered components must wrap any JavaScript interop calls in conditional logic to ensure those interop calls are not attempted during prerendering."); } - public Task InvokeAsync(string identifier, IEnumerable args, CancellationToken cancellationToken = default) + ValueTask IJSRuntime.InvokeAsync(string identifier, object[] args) { throw new InvalidOperationException("JavaScript interop calls cannot be issued during server-side prerendering, because the page has not yet loaded in the browser. Prerendered components must wrap any JavaScript interop calls in conditional logic to ensure those interop calls are not attempted during prerendering."); } } -} +} \ No newline at end of file