From 6526022f6c72eb98e9afb7dd77672c4340f00312 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Mon, 22 Jul 2019 20:51:33 -0700 Subject: [PATCH] Blazor API Review: RenderTreeBuilder Fixes: #12415 --- .../test/ChildContentRazorIntegrationTest.cs | 26 +-- .../ComponentRenderingRazorIntegrationTest.cs | 8 +- .../GenericComponentRazorIntegrationTest.cs | 2 +- .../Build/test/RazorIntegrationTestBase.cs | 2 +- .../perf/RenderTreeDiffBuilderBenchmark.cs | 4 +- ...ft.AspNetCore.Components.netstandard2.0.cs | 7 +- .../src/RenderTree/RenderTreeBuilder.cs | 49 +---- .../src/Rendering/ComponentState.cs | 18 +- .../Components/src/Rendering/Renderer.cs | 4 +- .../Components/test/Auth/AuthorizeViewTest.cs | 4 +- .../Auth/CascadingAuthenticationStateTest.cs | 2 +- .../Components/test/CascadingParameterTest.cs | 14 +- ...meterCollectionAssignmentExtensionsTest.cs | 2 +- .../Components/test/RenderTreeBuilderTest.cs | 181 +++++++++--------- .../test/RenderTreeDiffBuilderTest.cs | 26 +-- .../Components/test/RenderTreeUpdaterTest.cs | 22 +-- .../Components/test/RendererTest.cs | 22 +-- .../Shared/test/IComponentExtensions.cs | 5 +- src/Components/Web/src/Forms/EditForm.cs | 2 +- .../Web/test/Forms/InputBaseTest.cs | 2 +- .../Components/Shared/NavMenu.razor | 4 +- 21 files changed, 174 insertions(+), 232 deletions(-) diff --git a/src/Components/Blazor/Build/test/ChildContentRazorIntegrationTest.cs b/src/Components/Blazor/Build/test/ChildContentRazorIntegrationTest.cs index 8ee3131c1b..90090cb070 100644 --- a/src/Components/Blazor/Build/test/ChildContentRazorIntegrationTest.cs +++ b/src/Components/Blazor/Build/test/ChildContentRazorIntegrationTest.cs @@ -108,7 +108,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1), + frame => AssertFrame.Attribute(frame, "ChildContent", 1), frame => AssertFrame.Markup(frame, "\n
\n", 2)); } @@ -131,7 +131,7 @@ namespace Test frames, frame => AssertFrame.Component(frame, "Test.RenderChildContentString", 3, 0), frame => AssertFrame.Attribute(frame, "Value", "HI", 1), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 2), + frame => AssertFrame.Attribute(frame, "ChildContent", 2), frame => AssertFrame.MarkupWhitespace(frame, 3), frame => AssertFrame.Element(frame, "div", 2, 4), frame => AssertFrame.Text(frame, "hi", 5), @@ -158,7 +158,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1), + frame => AssertFrame.Attribute(frame, "ChildContent", 1), frame => AssertFrame.Markup(frame, "\n
\n ", 2)); } @@ -183,10 +183,10 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1), + frame => AssertFrame.Attribute(frame, "ChildContent", 1), frame => AssertFrame.MarkupWhitespace(frame, 2), frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 3), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 4), + frame => AssertFrame.Attribute(frame, "ChildContent", 4), frame => AssertFrame.MarkupWhitespace(frame, 6), frame => AssertFrame.Markup(frame, "\n
\n ", 5)); } @@ -208,7 +208,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3), + frame => AssertFrame.Attribute(frame, "ChildContent", 3), frame => AssertFrame.Element(frame, "div", 2, 0), frame => AssertFrame.Text(frame, "hi", 1)); } @@ -230,7 +230,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContentString", 3, 2), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3), + frame => AssertFrame.Attribute(frame, "ChildContent", 3), frame => AssertFrame.Attribute(frame, "Value", "HI", 4), frame => AssertFrame.Element(frame, "div", 2, 0), frame => AssertFrame.Text(frame, "hi", 1)); @@ -253,7 +253,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3), + frame => AssertFrame.Attribute(frame, "ChildContent", 3), frame => AssertFrame.Element(frame, "div", 2, 0), frame => AssertFrame.Text(frame, "hi", 1)); } @@ -275,7 +275,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3), + frame => AssertFrame.Attribute(frame, "ChildContent", 3), frame => AssertFrame.Element(frame, "div", 2, 0), frame => AssertFrame.Text(frame, "hi", 1)); } @@ -299,7 +299,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3), + frame => AssertFrame.Attribute(frame, "ChildContent", 3), frame => AssertFrame.Element(frame, "div", 2, 0), frame => AssertFrame.Text(frame, "hi", 1)); } @@ -327,7 +327,7 @@ namespace Test frame => AssertFrame.Attribute(frame, "Name", "billg", 3), frame => AssertFrame.Attribute(frame, "Header", typeof(RenderFragment), 4), frame => AssertFrame.Attribute(frame, "Value", "HI", 5), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, typeof(RenderFragment), 6), + frame => AssertFrame.Attribute(frame, "ChildContent", typeof(RenderFragment), 6), frame => AssertFrame.Attribute(frame, "Footer", typeof(RenderFragment), 10), frame => AssertFrame.Element(frame, "div", 2, 0), frame => AssertFrame.Text(frame, "billg", 1), @@ -360,7 +360,7 @@ namespace Test frame => AssertFrame.Attribute(frame, "Name", "billg", 1), frame => AssertFrame.Attribute(frame, "Value", "HI", 2), frame => AssertFrame.Attribute(frame, "Header", typeof(RenderFragment), 3), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, typeof(RenderFragment), 6), + frame => AssertFrame.Attribute(frame, "ChildContent", typeof(RenderFragment), 6), frame => AssertFrame.Attribute(frame, "Footer", typeof(RenderFragment), 10), frame => AssertFrame.Element(frame, "div", 2, 4), frame => AssertFrame.Text(frame, "billg", 5), @@ -395,7 +395,7 @@ namespace Test frame => AssertFrame.Attribute(frame, "Name", "billg", 1), frame => AssertFrame.Attribute(frame, "Value", "HI", 2), frame => AssertFrame.Attribute(frame, "Header", typeof(RenderFragment), 3), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, typeof(RenderFragment), 6), + frame => AssertFrame.Attribute(frame, "ChildContent", typeof(RenderFragment), 6), frame => AssertFrame.Attribute(frame, "Footer", typeof(RenderFragment), 10), frame => AssertFrame.Element(frame, "div", 2, 4), frame => AssertFrame.Text(frame, "billg", 5), diff --git a/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs b/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs index 7ecb5e4554..c746626559 100644 --- a/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs +++ b/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs @@ -345,7 +345,7 @@ namespace Test frames, frame => AssertFrame.Component(frame, "Test.MyComponent", 3, 0), frame => AssertFrame.Attribute(frame, "MyAttr", "abc", 1), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 2)); + frame => AssertFrame.Attribute(frame, "ChildContent", 2)); // Assert: Captured ChildContent frames are correct var childFrames = GetFrames((RenderFragment)frames[2].AttributeValue); @@ -385,7 +385,7 @@ namespace Test Assert.Collection( frames, frame => AssertFrame.Component(frame, "Test.MyComponent", 2, 0), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1)); + frame => AssertFrame.Attribute(frame, "ChildContent", 1)); // Assert: first level of ChildContent is correct // Note that we don't really need the sequence numbers to continue on from the @@ -397,7 +397,7 @@ namespace Test Assert.Collection( innerFrames, frame => AssertFrame.Component(frame, "Test.MyComponent", 2, 2), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3)); + frame => AssertFrame.Attribute(frame, "ChildContent", 3)); // Assert: second level of ChildContent is correct Assert.Collection( @@ -540,7 +540,7 @@ namespace Test frame => AssertFrame.Element(frame, "body", 5, 3), frame => AssertFrame.MarkupWhitespace(frame, 4), frame => AssertFrame.Component(frame, "Test.MyComponent", 2, 5), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 6), + frame => AssertFrame.Attribute(frame, "ChildContent", 6), frame => AssertFrame.MarkupWhitespace(frame, 16), frame => AssertFrame.MarkupWhitespace(frame, 17)); diff --git a/src/Components/Blazor/Build/test/GenericComponentRazorIntegrationTest.cs b/src/Components/Blazor/Build/test/GenericComponentRazorIntegrationTest.cs index ed03db31ab..45c178e4bb 100644 --- a/src/Components/Blazor/Build/test/GenericComponentRazorIntegrationTest.cs +++ b/src/Components/Blazor/Build/test/GenericComponentRazorIntegrationTest.cs @@ -170,7 +170,7 @@ namespace Test frames, frame => AssertFrame.Component(frame, genericComponentType.FullName, 3, 0), frame => AssertFrame.Attribute(frame, "Items", typeof(List), 1), - frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 2), + frame => AssertFrame.Attribute(frame, "ChildContent", 2), frame => AssertFrame.MarkupWhitespace(frame, 3), frame => AssertFrame.Element(frame, "div", 2, 4), frame => AssertFrame.Text(frame, "0", 5), diff --git a/src/Components/Blazor/Build/test/RazorIntegrationTestBase.cs b/src/Components/Blazor/Build/test/RazorIntegrationTestBase.cs index 8eda2e6b35..be14dcbdee 100644 --- a/src/Components/Blazor/Build/test/RazorIntegrationTestBase.cs +++ b/src/Components/Blazor/Build/test/RazorIntegrationTestBase.cs @@ -397,7 +397,7 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test protected ArrayRange GetFrames(RenderFragment fragment) { - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); fragment(builder); return builder.GetFrames(); } diff --git a/src/Components/Components/perf/RenderTreeDiffBuilderBenchmark.cs b/src/Components/Components/perf/RenderTreeDiffBuilderBenchmark.cs index d48b4026ab..51d7fea9fc 100644 --- a/src/Components/Components/perf/RenderTreeDiffBuilderBenchmark.cs +++ b/src/Components/Components/perf/RenderTreeDiffBuilderBenchmark.cs @@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Components.Performance // A simple component for basic tests -- this is similar to what MVC scaffolding generates // for bootstrap3 form fields, but modified to be more Component-like. - original = new RenderTreeBuilder(renderer); + original = new RenderTreeBuilder(); original.OpenElement(0, "div"); original.AddAttribute(1, "class", "form-group"); @@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Components.Performance original.CloseElement(); // Now simulate some input - modified = new RenderTreeBuilder(renderer); + modified = new RenderTreeBuilder(); modified.OpenElement(0, "div"); modified.AddAttribute(1, "class", "form-group"); diff --git a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs index ddc3e792ac..65b583091a 100644 --- a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs +++ b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs @@ -555,15 +555,12 @@ namespace Microsoft.AspNetCore.Components.RenderTree public ArrayRange(T[] array, int count) { throw null; } public Microsoft.AspNetCore.Components.RenderTree.ArrayRange Clone() { throw null; } } - public partial class RenderTreeBuilder : System.IDisposable + public sealed partial class RenderTreeBuilder : System.IDisposable { - public const string ChildContent = "ChildContent"; - public RenderTreeBuilder(Microsoft.AspNetCore.Components.Rendering.Renderer renderer) { } + public RenderTreeBuilder() { } public void AddAttribute(int sequence, in Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame frame) { } public void AddAttribute(int sequence, string name, Microsoft.AspNetCore.Components.EventCallback value) { } - public void AddAttribute(int sequence, string name, System.Action value) { } public void AddAttribute(int sequence, string name, bool value) { } - public void AddAttribute(int sequence, string name, System.Func value) { } public void AddAttribute(int sequence, string name, System.MulticastDelegate value) { } public void AddAttribute(int sequence, string name, object value) { } public void AddAttribute(int sequence, string name, string value) { } diff --git a/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs b/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs index 67aa929098..c7e2324d36 100644 --- a/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs +++ b/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading.Tasks; -using Microsoft.AspNetCore.Components.Rendering; namespace Microsoft.AspNetCore.Components.RenderTree { @@ -17,13 +16,12 @@ namespace Microsoft.AspNetCore.Components.RenderTree /// /// Provides methods for building a collection of entries. /// - public class RenderTreeBuilder : IDisposable + public sealed class RenderTreeBuilder : IDisposable { private readonly static object BoxedTrue = true; private readonly static object BoxedFalse = false; private readonly static string ComponentReferenceCaptureInvalidParentMessage = $"Component reference captures may only be added as children of frames of type {RenderTreeFrameType.Component}"; - private readonly Renderer _renderer; private readonly ArrayBuilder _entries = new ArrayBuilder(); private readonly Stack _openElementIndices = new Stack(); private RenderTreeFrameType? _lastNonAttributeFrameType; @@ -33,16 +31,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree /// /// The reserved parameter name used for supplying child content. /// - public const string ChildContent = nameof(ChildContent); - - /// - /// Constructs an instance of . - /// - /// The associated . - public RenderTreeBuilder(Renderer renderer) - { - _renderer = renderer ?? throw new ArgumentNullException(nameof(renderer)); - } + private const string ChildContent = nameof(ChildContent); /// /// Appends a frame representing an element, i.e., a container for other frames. @@ -206,40 +195,6 @@ namespace Microsoft.AspNetCore.Components.RenderTree } } - /// - /// - /// Appends a frame representing an -valued attribute. - /// - /// - /// The attribute is associated with the most recently added element. If the value is null and the - /// current element is not a component, the frame will be omitted. - /// - /// - /// An integer that represents the position of the instruction in the source code. - /// The name of the attribute. - /// The value of the attribute. - public void AddAttribute(int sequence, string name, Action value) - { - AddAttribute(sequence, name, (MulticastDelegate)value); - } - - /// - /// - /// Appends a frame representing a -valued attribute. - /// - /// - /// The attribute is associated with the most recently added element. If the value is null and the - /// current element is not a component, the frame will be omitted. - /// - /// - /// An integer that represents the position of the instruction in the source code. - /// The name of the attribute. - /// The value of the attribute. - public void AddAttribute(int sequence, string name, Func value) - { - AddAttribute(sequence, name, (MulticastDelegate)value); - } - /// /// /// Appends a frame representing a delegate-valued attribute. diff --git a/src/Components/Components/src/Rendering/ComponentState.cs b/src/Components/Components/src/Rendering/ComponentState.cs index 1d34ffff84..b9ad1605f6 100644 --- a/src/Components/Components/src/Rendering/ComponentState.cs +++ b/src/Components/Components/src/Rendering/ComponentState.cs @@ -36,8 +36,8 @@ namespace Microsoft.AspNetCore.Components.Rendering Component = component ?? throw new ArgumentNullException(nameof(component)); _renderer = renderer ?? throw new ArgumentNullException(nameof(renderer)); _cascadingParameters = CascadingParameterState.FindCascadingParameters(this); - CurrrentRenderTree = new RenderTreeBuilder(renderer); - _renderTreeBuilderPrevious = new RenderTreeBuilder(renderer); + CurrentRenderTree = new RenderTreeBuilder(); + _renderTreeBuilderPrevious = new RenderTreeBuilder(); if (_cascadingParameters != null) { @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Components.Rendering public int ComponentId { get; } public IComponent Component { get; } public ComponentState ParentComponentState { get; } - public RenderTreeBuilder CurrrentRenderTree { get; private set; } + public RenderTreeBuilder CurrentRenderTree { get; private set; } public void RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment) { @@ -61,17 +61,17 @@ namespace Microsoft.AspNetCore.Components.Rendering } // Swap the old and new tree builders - (CurrrentRenderTree, _renderTreeBuilderPrevious) = (_renderTreeBuilderPrevious, CurrrentRenderTree); + (CurrentRenderTree, _renderTreeBuilderPrevious) = (_renderTreeBuilderPrevious, CurrentRenderTree); - CurrrentRenderTree.Clear(); - renderFragment(CurrrentRenderTree); + CurrentRenderTree.Clear(); + renderFragment(CurrentRenderTree); var diff = RenderTreeDiffBuilder.ComputeDiff( _renderer, batchBuilder, ComponentId, _renderTreeBuilderPrevious.GetFrames(), - CurrrentRenderTree.GetFrames()); + CurrentRenderTree.GetFrames()); batchBuilder.UpdatedComponentDiffs.Append(diff); } @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Components.Rendering disposable.Dispose(); } - RenderTreeDiffBuilder.DisposeFrames(batchBuilder, CurrrentRenderTree.GetFrames()); + RenderTreeDiffBuilder.DisposeFrames(batchBuilder, CurrentRenderTree.GetFrames()); if (_hasAnyCascadingParameterSubscriptions) { @@ -188,7 +188,7 @@ namespace Microsoft.AspNetCore.Components.Rendering private void DisposeBuffers() { ((IDisposable)_renderTreeBuilderPrevious).Dispose(); - ((IDisposable)CurrrentRenderTree).Dispose(); + ((IDisposable)CurrentRenderTree).Dispose(); _latestDirectParametersSnapshot?.Dispose(); } } diff --git a/src/Components/Components/src/Rendering/Renderer.cs b/src/Components/Components/src/Rendering/Renderer.cs index 6f2a7048b4..605a72a125 100644 --- a/src/Components/Components/src/Rendering/Renderer.cs +++ b/src/Components/Components/src/Rendering/Renderer.cs @@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Components.Rendering /// /// The id for the component. /// The representing the current render tree. - private protected ArrayRange GetCurrentRenderTreeFrames(int componentId) => GetRequiredComponentState(componentId).CurrrentRenderTree.GetFrames(); + private protected ArrayRange GetCurrentRenderTreeFrames(int componentId) => GetRequiredComponentState(componentId).CurrentRenderTree.GetFrames(); /// /// Performs the first render for a root component, waiting for this component and all @@ -644,7 +644,7 @@ namespace Microsoft.AspNetCore.Components.Rendering if (componentState != null) { RenderTreeUpdater.UpdateToMatchClientState( - componentState.CurrrentRenderTree, + componentState.CurrentRenderTree, eventHandlerId, fieldInfo.FieldValue); } diff --git a/src/Components/Components/test/Auth/AuthorizeViewTest.cs b/src/Components/Components/test/Auth/AuthorizeViewTest.cs index d87eb9eaeb..07633ea9e4 100644 --- a/src/Components/Components/test/Auth/AuthorizeViewTest.cs +++ b/src/Components/Components/test/Auth/AuthorizeViewTest.cs @@ -484,10 +484,10 @@ namespace Microsoft.AspNetCore.Components { builder.OpenComponent>>(0); builder.AddAttribute(1, nameof(CascadingValue>.Value), AuthenticationState); - builder.AddAttribute(2, RenderTreeBuilder.ChildContent, (RenderFragment)(builder => + builder.AddAttribute(2, "ChildContent", (RenderFragment)(builder => { builder.OpenComponent(0); - builder.AddAttribute(1, RenderTreeBuilder.ChildContent, _childContent); + builder.AddAttribute(1, "ChildContent", _childContent); builder.CloseComponent(); })); builder.CloseComponent(); diff --git a/src/Components/Components/test/Auth/CascadingAuthenticationStateTest.cs b/src/Components/Components/test/Auth/CascadingAuthenticationStateTest.cs index d21665249e..21a269932c 100644 --- a/src/Components/Components/test/Auth/CascadingAuthenticationStateTest.cs +++ b/src/Components/Components/test/Auth/CascadingAuthenticationStateTest.cs @@ -180,7 +180,7 @@ namespace Microsoft.AspNetCore.Components protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.OpenComponent(0); - builder.AddAttribute(1, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(1, "ChildContent", new RenderFragment(childBuilder => { childBuilder.OpenComponent(0); childBuilder.CloseComponent(); diff --git a/src/Components/Components/test/CascadingParameterTest.cs b/src/Components/Components/test/CascadingParameterTest.cs index 766a1bd3b4..d40c4d70c8 100644 --- a/src/Components/Components/test/CascadingParameterTest.cs +++ b/src/Components/Components/test/CascadingParameterTest.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Components.Test { builder.OpenComponent>(0); builder.AddAttribute(1, "Value", "Hello"); - builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder => { childBuilder.OpenComponent>(0); childBuilder.AddAttribute(1, "RegularParameter", "Goodbye"); @@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Components.Test { builder.OpenComponent>(0); builder.AddAttribute(1, "Value", "Hello"); - builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder => { childBuilder.OpenComponent>(0); childBuilder.AddAttribute(1, "RegularParameter", regularParameterValue); @@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Components.Test { builder.OpenComponent>(0); builder.AddAttribute(1, "Value", providedValue); - builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder => { childBuilder.OpenComponent>(0); childBuilder.AddAttribute(1, "RegularParameter", "Goodbye"); @@ -152,7 +152,7 @@ namespace Microsoft.AspNetCore.Components.Test { builder.OpenComponent>(0); builder.AddAttribute(1, "Value", "Unchanging value"); - builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder => { childBuilder.OpenComponent>(0); childBuilder.AddAttribute(1, "RegularParameter", "Goodbye"); @@ -192,12 +192,12 @@ namespace Microsoft.AspNetCore.Components.Test builder.OpenComponent>(0); builder.AddAttribute(1, "Value", 123); builder.AddAttribute(2, "IsFixed", true); - builder.AddAttribute(3, RenderTreeBuilder.ChildContent, new RenderFragment(builder2 => + builder.AddAttribute(3, "ChildContent", new RenderFragment(builder2 => { // Then also have a non-fixed cascading value so we can show that unsubscription works builder2.OpenComponent>(0); builder2.AddAttribute(1, "Value", providedValue); - builder2.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(builder3 => + builder2.AddAttribute(2, "ChildContent", new RenderFragment(builder3 => { if (displayNestedComponent) { @@ -258,7 +258,7 @@ namespace Microsoft.AspNetCore.Components.Test builder.OpenComponent>(0); builder.AddAttribute(1, "Value", providedValue); builder.AddAttribute(2, "IsFixed", true); - builder.AddAttribute(3, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(3, "ChildContent", new RenderFragment(childBuilder => { if (shouldIncludeChild) { diff --git a/src/Components/Components/test/ParameterCollectionAssignmentExtensionsTest.cs b/src/Components/Components/test/ParameterCollectionAssignmentExtensionsTest.cs index 987673ae74..5ef39a979d 100644 --- a/src/Components/Components/test/ParameterCollectionAssignmentExtensionsTest.cs +++ b/src/Components/Components/test/ParameterCollectionAssignmentExtensionsTest.cs @@ -459,7 +459,7 @@ namespace Microsoft.AspNetCore.Components.Test public ParameterCollection Build() { - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenComponent(0); foreach (var kvp in _keyValuePairs) { diff --git a/src/Components/Components/test/RenderTreeBuilderTest.cs b/src/Components/Components/test/RenderTreeBuilderTest.cs index 7db26f551f..4bce2e3165 100644 --- a/src/Components/Components/test/RenderTreeBuilderTest.cs +++ b/src/Components/Components/test/RenderTreeBuilderTest.cs @@ -16,20 +16,11 @@ namespace Microsoft.AspNetCore.Components.Test { public class RenderTreeBuilderTest { - [Fact] - public void RequiresNonnullRenderer() - { - Assert.Throws(() => - { - new RenderTreeBuilder(null); - }); - } - [Fact] public void StartsEmpty() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Assert var frames = builder.GetFrames(); @@ -41,7 +32,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddText() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var nullString = (string)null; // Act @@ -61,7 +52,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddMarkup() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "some elem"); @@ -84,7 +75,7 @@ namespace Microsoft.AspNetCore.Components.Test // as opposed to calling builder.AddMarkupContent directly. // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act - can use either constructor or cast builder.AddContent(0, (MarkupString)"Some markup"); @@ -101,7 +92,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddNullMarkup() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.AddMarkupContent(0, null); @@ -116,7 +107,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddNonStringValueAsText() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var nullObject = (object)null; // Act @@ -134,7 +125,7 @@ namespace Microsoft.AspNetCore.Components.Test public void UnclosedElementsHaveNoSubtreeLength() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "my element"); @@ -148,7 +139,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ClosedEmptyElementsHaveSubtreeLengthOne() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.AddContent(0, "some frame so that the element isn't at position zero"); @@ -165,7 +156,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ClosedElementsHaveCorrectSubtreeLength() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "my element"); @@ -184,7 +175,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanNestElements() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.AddContent(0, "standalone text 1"); // 0: standalone text 1 @@ -224,7 +215,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddAttributes() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); Action eventHandler = eventInfo => { }; // Act @@ -251,7 +242,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddMultipleAttributes_AllowsNull() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "myelement"); @@ -269,7 +260,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddMultipleAttributes_InterspersedWithOtherAttributes() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); Action eventHandler = eventInfo => { }; // Act @@ -367,7 +358,7 @@ namespace Microsoft.AspNetCore.Components.Test private void CanAddMultipleAttributesTest(IEnumerable> attributes) { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "myelement"); @@ -389,7 +380,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddAttributeAtRoot() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -402,7 +393,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddDelegateAttributeAtRoot() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -415,7 +406,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddAttributeToText() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -430,7 +421,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddEventHandlerAttributeToText() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -445,7 +436,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddAttributeToRegion() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -459,7 +450,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddAttributeToElementReferenceCapture() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -474,7 +465,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddAttributeToComponentReferenceCapture() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -489,7 +480,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddChildComponentsUsingGenericParam() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(10, "parent"); // 0: @@ -516,7 +507,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddChildComponentsUsingTypeArgument() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act var componentType = typeof(TestComponent); @@ -544,7 +535,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddRegions() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(10, "parent"); // 0: @@ -572,7 +563,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddFragments() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); RenderFragment fragment = fragmentBuilder => { fragmentBuilder.AddContent(0, "Hello from the fragment"); @@ -599,7 +590,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddElementReferenceCaptureInsideElement() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); Action referenceCaptureAction = elementReference => { }; // Act @@ -621,7 +612,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddElementReferenceCaptureWithNoParent() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -634,7 +625,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddElementReferenceCaptureInsideComponent() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -648,7 +639,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddElementReferenceCaptureInsideRegion() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -667,7 +658,7 @@ namespace Microsoft.AspNetCore.Components.Test // just works. // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); Action referenceCaptureAction1 = elementReference => { }; Action referenceCaptureAction2 = elementReference => { }; @@ -688,7 +679,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddComponentReferenceCaptureInsideComponent() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); Action myAction = elementReference => { }; // Act @@ -710,7 +701,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddComponentReferenceCaptureWithNoParent() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -723,7 +714,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddComponentReferenceCaptureInsideElement() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -737,7 +728,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddComponentReferenceCaptureInsideRegion() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert Assert.Throws(() => @@ -756,7 +747,7 @@ namespace Microsoft.AspNetCore.Components.Test // just works. // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); Action referenceCaptureAction1 = elementReference => { }; Action referenceCaptureAction2 = elementReference => { }; @@ -777,7 +768,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanClear() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.AddContent(0, "some text"); @@ -794,7 +785,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_BoolTrue_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -812,7 +803,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_BoolFalse_IgnoresFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -831,7 +822,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_Bool_SetsAttributeValue(bool value) { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenComponent(0); @@ -849,7 +840,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_StringValue_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -867,7 +858,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_StringNull_IgnoresFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -886,7 +877,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_StringValue_SetsAttributeValue(string value) { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenComponent(0); @@ -904,7 +895,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventHandler_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var value = new Action((e) => { }); @@ -924,7 +915,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_NullEventHandler_IgnoresFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -941,7 +932,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_Action_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var value = new Action(() => { }); @@ -961,7 +952,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_NullAction_IgnoresFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -985,7 +976,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_EventHandlerValue_SetsAttributeValue(Action value) { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenComponent(0); @@ -1003,7 +994,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventCallback_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = new EventCallback(null, new Action(() => { })); // Act @@ -1022,7 +1013,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventCallback_Default_DoesNotAddFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = default(EventCallback); // Act @@ -1040,7 +1031,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventCallbackWithReceiver_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action(() => { })); @@ -1060,7 +1051,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_EventCallback_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action(() => { })); @@ -1080,7 +1071,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventCallbackOfT_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = new EventCallback(null, new Action((s) => { })); // Act @@ -1099,7 +1090,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventCallbackOfT_Default_DoesNotAddFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = default(EventCallback); // Act @@ -1117,7 +1108,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_EventCallbackWithReceiverOfT_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action((s) => { })); @@ -1137,7 +1128,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_EventCallbackOfT_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action((s) => { })); @@ -1157,7 +1148,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectBoolTrue_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -1175,7 +1166,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectBoolFalse_IgnoresFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -1194,7 +1185,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_ObjectBoolValue_SetsAttributeValue(bool value) { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenComponent(0); @@ -1212,7 +1203,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectStringValue_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -1230,7 +1221,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_ObjectStringValue_SetsAttributeValue() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenComponent(0); @@ -1248,7 +1239,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventHandler_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var value = new Action((e) => { }); @@ -1268,7 +1259,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_ObjectUIEventHandleValue_SetsAttributeValue() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var value = new Action((e) => { }); @@ -1288,7 +1279,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectAction_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var value = new Action(() => { }); @@ -1308,7 +1299,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_ObjectAction_SetsAttributeValue() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var value = new Action(() => { }); @@ -1328,7 +1319,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventCallback_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = new EventCallback(null, new Action(() => { })); // Act @@ -1347,7 +1338,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventCallback_Default_DoesNotAddFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = default(EventCallback); // Act @@ -1365,7 +1356,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventCallbackWithReceiver_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action(() => { })); @@ -1385,7 +1376,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Component_ObjectEventCallback_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action(() => { })); @@ -1405,7 +1396,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventCallbackOfT_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = new EventCallback(null, new Action((s) => { })); // Act @@ -1424,7 +1415,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventCallbackOfT_Default_DoesNotAddFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var callback = default(EventCallback); // Act @@ -1442,7 +1433,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectEventCallbackWithReceiverOfT_AddsFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var receiver = Mock.Of(); var callback = new EventCallback(receiver, new Action((s) => { })); @@ -1462,7 +1453,7 @@ namespace Microsoft.AspNetCore.Components.Test public void AddAttribute_Element_ObjectNull_IgnoresFrame() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -1479,7 +1470,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddKeyToElement() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var keyValue = new object(); // Act @@ -1505,7 +1496,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CanAddKeyToComponent() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); var keyValue = new object(); // Act @@ -1531,7 +1522,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddKeyOutsideComponentOrElement_TreeRoot() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert var ex = Assert.Throws(() => @@ -1545,7 +1536,7 @@ namespace Microsoft.AspNetCore.Components.Test public void CannotAddKeyOutsideComponentOrElement_RegionRoot() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act/Assert builder.OpenElement(0, "some element"); @@ -1561,7 +1552,7 @@ namespace Microsoft.AspNetCore.Components.Test public void IgnoresNullElementKey() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenElement(0, "elem"); @@ -1582,7 +1573,7 @@ namespace Microsoft.AspNetCore.Components.Test public void IgnoresNullComponentKey() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); // Act builder.OpenComponent(0); @@ -1603,7 +1594,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_DoesNotRemoveDuplicatesWithoutAddMultipleAttributes() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "div"); builder.AddAttribute(0, "id", "hi"); builder.AddAttribute(0, "id", "bye"); @@ -1627,7 +1618,7 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange var capture = (Action)((_) => { }); - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "div"); builder.AddAttribute(0, "id", "hi"); builder.AddMultipleAttributes(0, new Dictionary(StringComparer.OrdinalIgnoreCase) @@ -1652,7 +1643,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_StopsAtFirstNonAttributeFrame_Content() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "div"); builder.AddAttribute(0, "id", "hi"); builder.AddMultipleAttributes(0, new Dictionary(StringComparer.OrdinalIgnoreCase) @@ -1677,7 +1668,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_CanRemoveDuplicateInsideElement() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "div"); builder.AddAttribute(0, "id", "hi"); builder.AddMultipleAttributes(0, new Dictionary(StringComparer.OrdinalIgnoreCase) @@ -1700,7 +1691,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_CanRemoveDuplicateInsideComponent() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenComponent(0); builder.AddAttribute(0, "id", "hi"); builder.AddMultipleAttributes(0, new Dictionary(StringComparer.OrdinalIgnoreCase) @@ -1724,7 +1715,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_SilentFrameFollowedBySameAttribute() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenComponent(0); builder.AddAttribute(0, "id", (string)null); builder.AddMultipleAttributes(0, new Dictionary(StringComparer.OrdinalIgnoreCase) @@ -1747,7 +1738,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_DoesNotRemoveDuplicatesInsideChildElement() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "div"); builder.AddAttribute(0, "id", "hi"); builder.AddMultipleAttributes(0, new Dictionary(StringComparer.OrdinalIgnoreCase) @@ -1777,7 +1768,7 @@ namespace Microsoft.AspNetCore.Components.Test public void ProcessDuplicateAttributes_CanRemoveOverwrittenAttributes() { // Arrange - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "div"); builder.AddAttribute(0, "A", "hi"); builder.AddAttribute(0, "2", new EventCallback(null, (Action)(() => { }))); diff --git a/src/Components/Components/test/RenderTreeDiffBuilderTest.cs b/src/Components/Components/test/RenderTreeDiffBuilderTest.cs index b6bfa8e005..c098d56d97 100644 --- a/src/Components/Components/test/RenderTreeDiffBuilderTest.cs +++ b/src/Components/Components/test/RenderTreeDiffBuilderTest.cs @@ -23,8 +23,8 @@ namespace Microsoft.AspNetCore.Components.Test public RenderTreeDiffBuilderTest() { renderer = new FakeRenderer(); - oldTree = new RenderTreeBuilder(renderer); - newTree = new RenderTreeBuilder(renderer); + oldTree = new RenderTreeBuilder(); + newTree = new RenderTreeBuilder(); } void IDisposable.Dispose() @@ -217,7 +217,7 @@ namespace Microsoft.AspNetCore.Components.Test oldTree.SetKey("retained key"); oldTree.AddAttribute(1, "ParamName", "Param old value"); oldTree.CloseComponent(); - using var initial = new RenderTreeBuilder(renderer); + using var initial = new RenderTreeBuilder(); GetRenderedBatch(initial, oldTree, false); // Assign initial IDs var oldComponent = GetComponents(oldTree).Single(); @@ -265,7 +265,7 @@ namespace Microsoft.AspNetCore.Components.Test oldTree.CloseComponent(); // Instantiate initial components - using var initial = new RenderTreeBuilder(renderer); + using var initial = new RenderTreeBuilder(); GetRenderedBatch(initial, oldTree, false); var oldComponents = GetComponents(oldTree); @@ -297,7 +297,7 @@ namespace Microsoft.AspNetCore.Components.Test oldTree.CloseComponent(); // Instantiate initial component - using var renderTreeBuilder = new RenderTreeBuilder(renderer); + using var renderTreeBuilder = new RenderTreeBuilder(); GetRenderedBatch(renderTreeBuilder, oldTree, false); var oldComponent = GetComponents(oldTree).Single(); Assert.NotNull(oldComponent); @@ -736,7 +736,7 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange oldTree.OpenComponent(123); oldTree.CloseComponent(); - using var initial = new RenderTreeBuilder(renderer); + using var initial = new RenderTreeBuilder(); GetRenderedBatch(initial, oldTree, false); // Assign initial IDs newTree.OpenComponent(123); newTree.CloseComponent(); @@ -1553,7 +1553,7 @@ namespace Microsoft.AspNetCore.Components.Test newTree.CloseElement(); // using var batchBuilder = new RenderBatchBuilder(); - using var renderTreeBuilder = new RenderTreeBuilder(renderer); + using var renderTreeBuilder = new RenderTreeBuilder(); RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTreeBuilder.GetFrames(), oldTree.GetFrames()); var originalFakeComponentInstance = oldTree.GetFrames().Array[2].Component; var originalFakeComponent2Instance = oldTree.GetFrames().Array[3].Component; @@ -1639,7 +1639,7 @@ namespace Microsoft.AspNetCore.Components.Test newTree.CloseComponent(); using var batchBuilder = new RenderBatchBuilder(); - using var renderTree = new RenderTreeBuilder(renderer); + using var renderTree = new RenderTreeBuilder(); RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTree.GetFrames(), oldTree.GetFrames()); var originalComponentInstance = (FakeComponent)oldTree.GetFrames().Array[0].Component; @@ -1679,7 +1679,7 @@ namespace Microsoft.AspNetCore.Components.Test } using var batchBuilder = new RenderBatchBuilder(); - using var renderTreeBuilder = new RenderTreeBuilder(renderer); + using var renderTreeBuilder = new RenderTreeBuilder(); RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTreeBuilder.GetFrames(), oldTree.GetFrames()); var originalComponentInstance = (CaptureSetParametersComponent)oldTree.GetFrames().Array[0].Component; Assert.Equal(1, originalComponentInstance.SetParametersCallCount); @@ -1709,7 +1709,7 @@ namespace Microsoft.AspNetCore.Components.Test } using var batchBuilder = new RenderBatchBuilder(); - using var renderTreeBuilder = new RenderTreeBuilder(renderer); + using var renderTreeBuilder = new RenderTreeBuilder(); RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTreeBuilder.GetFrames(), oldTree.GetFrames()); var componentInstance = (CaptureSetParametersComponent)oldTree.GetFrames().Array[0].Component; Assert.Equal(1, componentInstance.SetParametersCallCount); @@ -1735,7 +1735,7 @@ namespace Microsoft.AspNetCore.Components.Test newTree.CloseComponent(); // using var batchBuilder = new RenderBatchBuilder(); - using var renderTree = new RenderTreeBuilder(renderer); + using var renderTree = new RenderTreeBuilder(); RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTree.GetFrames(), oldTree.GetFrames()); // Act/Assert @@ -1945,7 +1945,7 @@ namespace Microsoft.AspNetCore.Components.Test oldTree.AddAttribute(1, nameof(FakeComponent.StringProperty), "Second param"); oldTree.CloseComponent(); - using var renderTreeBuilder = new RenderTreeBuilder(renderer); + using var renderTreeBuilder = new RenderTreeBuilder(); GetRenderedBatch(renderTreeBuilder, oldTree, false); // Assign initial IDs var oldComponents = GetComponents(oldTree); @@ -2147,7 +2147,7 @@ namespace Microsoft.AspNetCore.Components.Test { if (initializeFromFrames) { - using var renderTreeBuilder = new RenderTreeBuilder(renderer); + using var renderTreeBuilder = new RenderTreeBuilder(); using var initializeBatchBuilder = new RenderBatchBuilder(); var emptyFrames = renderTreeBuilder.GetFrames(); diff --git a/src/Components/Components/test/RenderTreeUpdaterTest.cs b/src/Components/Components/test/RenderTreeUpdaterTest.cs index 27d2699867..5011d6fb4a 100644 --- a/src/Components/Components/test/RenderTreeUpdaterTest.cs +++ b/src/Components/Components/test/RenderTreeUpdaterTest.cs @@ -17,9 +17,9 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange var valuePropName = "testprop"; var renderer = new TestRenderer(); - var builder = new RenderTreeBuilder(renderer); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "elem"); - builder.AddAttribute(1, "eventname", () => { }); + builder.AddAttribute(1, "eventname", (Action)(() => { })); builder.SetUpdatesAttributeName(valuePropName); builder.AddAttribute(2, valuePropName, "initial value"); builder.CloseElement(); @@ -45,9 +45,9 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange var valuePropName = "testprop"; var renderer = new TestRenderer(); - var builder = new RenderTreeBuilder(renderer); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "elem"); - builder.AddAttribute(1, "eventname", () => { }); + builder.AddAttribute(1, "eventname", (Action)(() => { })); builder.SetUpdatesAttributeName(valuePropName); builder.AddAttribute(2, valuePropName, "initial value"); builder.CloseElement(); @@ -70,14 +70,14 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange var valuePropName = "testprop"; var renderer = new TestRenderer(); - var builder = new RenderTreeBuilder(renderer); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "elem"); - builder.AddAttribute(1, "eventname", () => { }); + builder.AddAttribute(1, "eventname", (Action)(() => { })); builder.SetUpdatesAttributeName(valuePropName); builder.AddAttribute(2, valuePropName, "unchanged 1"); builder.CloseElement(); builder.OpenElement(3, "elem"); - builder.AddAttribute(4, "eventname", () => { }); + builder.AddAttribute(4, "eventname", (Action)(() => { })); builder.SetUpdatesAttributeName(valuePropName); builder.AddAttribute(5, "unrelated prop before", "unchanged 2"); builder.AddAttribute(6, valuePropName, "initial value"); @@ -108,9 +108,9 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange var valuePropName = "testprop"; var renderer = new TestRenderer(); - var builder = new RenderTreeBuilder(renderer); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "elem"); - builder.AddAttribute(1, "eventname", () => { }); + builder.AddAttribute(1, "eventname", (Action)(() => { })); builder.SetUpdatesAttributeName(valuePropName); builder.CloseElement(); var frames = builder.GetFrames(); @@ -133,13 +133,13 @@ namespace Microsoft.AspNetCore.Components.Test // Arrange var valuePropName = "testprop"; var renderer = new TestRenderer(); - var builder = new RenderTreeBuilder(renderer); + var builder = new RenderTreeBuilder(); builder.OpenElement(0, "grandparent"); builder.OpenRegion(1); builder.OpenElement(2, "sibling before"); // To show that non-ancestors aren't expanded builder.CloseElement(); builder.OpenElement(3, "elem with handler"); - builder.AddAttribute(4, "eventname", () => { }); + builder.AddAttribute(4, "eventname", (Action)(() => { })); builder.SetUpdatesAttributeName(valuePropName); builder.CloseElement(); // elem with handler builder.CloseRegion(); diff --git a/src/Components/Components/test/RendererTest.cs b/src/Components/Components/test/RendererTest.cs index c165c6e1ec..44118704d4 100644 --- a/src/Components/Components/test/RendererTest.cs +++ b/src/Components/Components/test/RendererTest.cs @@ -814,7 +814,7 @@ namespace Microsoft.AspNetCore.Components.Test parentComponent.RenderFragment = (builder) => { builder.OpenComponent(0); - builder.AddAttribute(1, nameof(EventComponent.OnClickAction), parentComponent.SomeMethod); + builder.AddAttribute(1, nameof(EventComponent.OnClickAction), (Action)parentComponent.SomeMethod); builder.CloseComponent(); }; parentComponent.OnEvent = () => @@ -855,10 +855,10 @@ namespace Microsoft.AspNetCore.Components.Test parentComponent.RenderFragment = (builder) => { builder.OpenComponent(0); - builder.AddAttribute(1, nameof(EventComponent.OnClickAction), () => + builder.AddAttribute(1, nameof(EventComponent.OnClickAction), (Action)(() => { parentComponent.SomeMethod(); - }); + })); builder.CloseComponent(); }; parentComponent.OnEvent = () => @@ -1133,10 +1133,10 @@ namespace Microsoft.AspNetCore.Components.Test parentComponent.RenderFragment = (builder) => { builder.OpenComponent(0); - builder.AddAttribute(1, nameof(EventComponent.OnClickAction), () => + builder.AddAttribute(1, nameof(EventComponent.OnClickAction), (Action)(() => { // Do nothing. - }); + })); builder.CloseComponent(); }; @@ -1434,10 +1434,10 @@ namespace Microsoft.AspNetCore.Components.Test parentComponent.RenderFragment = (builder) => { builder.OpenComponent(0); - builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), async () => + builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), (Func)(async () => { await tcs.Task; - }); + })); builder.CloseComponent(); }; @@ -1543,11 +1543,11 @@ namespace Microsoft.AspNetCore.Components.Test parentComponent.RenderFragment = (builder) => { builder.OpenComponent(0); - builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), async () => + builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), (Func)(async () => { await tcs.Task; throw new TaskCanceledException(); - }); + })); builder.CloseComponent(); }; @@ -1661,11 +1661,11 @@ namespace Microsoft.AspNetCore.Components.Test parentComponent.RenderFragment = (builder) => { builder.OpenComponent(0); - builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), async () => + builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), (Func)(async () => { await tcs.Task; throw new InvalidTimeZoneException(); - }); + })); builder.CloseComponent(); }; diff --git a/src/Components/Shared/test/IComponentExtensions.cs b/src/Components/Shared/test/IComponentExtensions.cs index 34b7528548..58a673c895 100644 --- a/src/Components/Shared/test/IComponentExtensions.cs +++ b/src/Components/Shared/test/IComponentExtensions.cs @@ -1,10 +1,9 @@ // 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.AspNetCore.Components; -using Microsoft.AspNetCore.Components.RenderTree; using System.Collections.Generic; using System.Threading.Tasks; +using Microsoft.AspNetCore.Components.RenderTree; namespace Microsoft.AspNetCore.Components.Test.Helpers { @@ -20,7 +19,7 @@ namespace Microsoft.AspNetCore.Components.Test.Helpers private static ParameterCollection DictionaryToParameterCollection( IDictionary parameters) { - var builder = new RenderTreeBuilder(new TestRenderer()); + var builder = new RenderTreeBuilder(); builder.OpenComponent(0); foreach (var pair in parameters) { diff --git a/src/Components/Web/src/Forms/EditForm.cs b/src/Components/Web/src/Forms/EditForm.cs index 5cb26c8db7..4a0e490dcf 100644 --- a/src/Components/Web/src/Forms/EditForm.cs +++ b/src/Components/Web/src/Forms/EditForm.cs @@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Components.Forms builder.OpenComponent>(3); builder.AddAttribute(4, "IsFixed", true); builder.AddAttribute(5, "Value", _fixedEditContext); - builder.AddAttribute(6, RenderTreeBuilder.ChildContent, ChildContent?.Invoke(_fixedEditContext)); + builder.AddAttribute(6, "ChildContent", ChildContent?.Invoke(_fixedEditContext)); builder.CloseComponent(); builder.CloseElement(); diff --git a/src/Components/Web/test/Forms/InputBaseTest.cs b/src/Components/Web/test/Forms/InputBaseTest.cs index 62e40cb88b..71deade2b3 100644 --- a/src/Components/Web/test/Forms/InputBaseTest.cs +++ b/src/Components/Web/test/Forms/InputBaseTest.cs @@ -437,7 +437,7 @@ namespace Microsoft.AspNetCore.Components.Forms { builder.OpenComponent>(0); builder.AddAttribute(1, "Value", EditContext); - builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder => + builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder => { childBuilder.OpenComponent(0); childBuilder.AddAttribute(0, "Value", Value); diff --git a/src/Mvc/samples/MvcSandbox/Components/Shared/NavMenu.razor b/src/Mvc/samples/MvcSandbox/Components/Shared/NavMenu.razor index b879ed0b22..40dbda7c35 100644 --- a/src/Mvc/samples/MvcSandbox/Components/Shared/NavMenu.razor +++ b/src/Mvc/samples/MvcSandbox/Components/Shared/NavMenu.razor @@ -2,12 +2,12 @@ -
+