Commit Graph

17 Commits

Author SHA1 Message Date
Steve Sanderson 6534bcff32
Expand Blazor logging (#11919) 2019-07-08 13:50:19 +01:00
Steve Sanderson 6f6d099113
Make ArrayBuilder<T>.ToSegment() safe even when reusing underlying arrays (#11903) 2019-07-05 16:01:53 +01:00
Ryan Nowak db0d065b76 Rename Invoke -> InvokeAsync 2019-07-03 10:04:55 -07:00
Ryan Nowak 8a7508d818 Move Blazor HttpClient functionality out of sfx
Fixes: #11756 #10505

See description in #11756
2019-07-01 17:14:38 -07:00
Steve Sanderson f162ba1961
For two-way bindings, enforce consistency between .NET model and DOM by patching old tree. Fixes #8204 (#11438) 2019-06-24 23:15:33 +01:00
Steve Sanderson d18a033b1e
Integrate AuthorizeView with actual authorization (#10487) 2019-05-24 15:28:37 +01:00
Ryan Nowak 2948c81aea
Fix RendererSyncContext.Post() (#10451)
* Fix RendererSyncContext.Post()

Fixes: #9683 - SignalR connection breaks on large DOM

The root cause here is a misbehaving sync context. It's not legal for a
Post() implementation to run a callback synchronously. We want that
behavior for most of the functionality Blazor calls directly, but Post()
should always go async or else various threading primitives are broken.

* Fix incorrect tests

These tests have the assumption that setting the result of a TCS will
execution continuations synchronously. This was a bug in our
SyncContext, and these tests needed updating to be more resiliant.

* Remove a delegate allocation
2019-05-23 10:39:53 -07:00
Steve Sanderson 1dbc203e19
Components auth: basic services and components (#10227) 2019-05-16 09:59:12 +01:00
Steve Sanderson a9d3f9c22b
Remove redundant IEnumerable interface from ArrayRange<T> (#9652)
* Remove unused IEnumerable interfaces from ArrayRange<T>

* Repair usage in tests

* Update ref assembly
2019-04-23 12:24:44 +01:00
Doug Bunting 1b50085835
Chain coherent dependencies up through Extensions to EF Core packages (#8877)
* Chain coherent dependencies up through Extensions to EF Core packages
- should reduce incoherent PRs we get from `darc`
- react to AspNetCore-Tooling breaking changes
  - use C# Preview version in Blazor integration tests
    - update `EnsureOptions_ConfiguresDefaultParseOptions` test to match new C# version default
  - react to new newline encoding behavior; thanx @ajaybhargavb!
  - update product code and tests to use new GetItem API; thanx @NTaylorMullen!
    - RazorProjectFileSystem breaking change
    - update ref assemblies
- react to EF Core breaking changes
  - react to EF Core method rename
  - react to aspnet/EntityFrameworkCore@ccfc5edbc7
  - react to aspnet/EntityFrameworkCore@6cb41531df breaking change
    - disable new analyzer in `ScratchDatabaseFixture`
- skip `MvcTemplate_NoAuthImplAsync(...)` test for F#
  - #8996
- exclude some runtime assemblies from crossgen; thanx @BrennanConroy!
- add direct references to Mvc in AzureAD samples
  - unclear why the reference is no longer pulled in transitively

* Run `darc` to grab the latest
- CoreFx packages with version 4.6.0-preview4.19204.1 to ensure coherency
- core-setup packages with version 3.0.0-preview4-27604-05 to ensure coherency
- Extensions packages with verisn 3.0.0-preview4.19204.2 to ensure coherency
- EntityFrameworkCore packages with version 3.0.0-preview4.19204.7 from build 20190404.7
- AspNetCore-Tooling packages with version 3.0.0-preview4.19204.2 from build 20190404.2
2019-04-05 10:54:04 -07:00
Ryan Nowak cb21edc500
Fix #7258 - remove components.server dependencies on blazor-specific plumbing (#7934)
* Removes a bunch of trivial usage of Blazor

... in names and comments where we don't specifically mean Blazor.

* Remove obsolete Startup from Components app

* Move UseBlazor into Blazor.Server

Moves UseBlazor and the related features in Blazor.Server - along with
some other general cleanup of misc shared files.

Now Components.Server has a much slimmer set of dependencies (MVC is
gone) and doesn't contain the "double startup" pattern that we
introduced (sorry).

We'll revisit UseBlazor and the dependencies there once the new
MapFallbackToFile support is available from static files.

* minor PR feedback

* Update reference assemblies

* fix broken test
2019-02-28 10:36:07 -08:00
Ryan Nowak 98fe8a8328 Improvements to bind and event handling
The changes here make event dispatching (including bind) more
user-friendly by avoiding the need for manual calls to StateHasChnaged.

We also introduce a new type `EventCallback` (and `EventCallback<T>`).
This is a new primitive that is like a super-powered version of a
delegate. When writing a component that accepts delegates as parameters,
consider using `EventCallback` for the following reasons:
- Allows consumer to pass a variety of different delegate signatures
- Does proper event dispatching and error handling

Using `EventCallback` will eliminate most of the remaining cases where a
manual `StateHasChanged` is required when components are passing content
and delegates to each other.

`EventCallback` is inherently async for the reason that this is really
the only way to provide correct error handling.

-----

The fix for this will be two-phase by first creating a set of APIs that
can be targeted by the compiler that has the desired behaviour and then
updating the compiler to target this new infrastructure.
2019-02-17 15:58:08 -08:00
Pranav K cddbc2e888
Improve Components error handling (#7165)
* Improve Components error handling

* Change event handlers IHandleEvent, IHandleAfterEvent to be async.
* Return faulted tasks to Renderer instead of handling exceptions in ComponentBase
* Use ILogger in RemoteRenderer, and log to console in WebAssemblyRenderer
* Cleaning up touched files

Fixes https://github.com/aspnet/AspNetCore/issues/4964
2019-02-13 14:22:46 -08:00
Javier Calvarro Nelson f456e3d153
[Components] [Fixes #6953, #7226]
* Moves the Synchronization context from the remote renderer to the base renderer.
* Removes all the locking from the base renderer.
2019-02-07 07:03:52 -08:00
Steve Sanderson c901cc069d Rename IBlazorApplicationBuilder->IComponentsApplicationBuilder 2019-01-18 14:22:37 -08:00
Javier Calvarro Nelson 19b543e45f [Components] Support for prerrendering asynchronous components.
* Updates the IComponent interface to rename Init into Configure
* Updates the IComponent interface to change SetParameters for
  SetParametersAsync and make it return a Task that represents when the
  component is done applying the parameters and potentially triggering
  one or more renders.
* Updates ComponentBase SetParametersAsync to ensure that OnInit(Async)
  runs before OnParametersSet(Async).
* Introduces ParameterCollection.FromDictionary to generate a parameter
  collection from a dictionary of key value pairs.
* Introduces RenderComponentAsync on HtmlRenderer to support
  prerrendering of async components.
* Introduces RenderRootComponentAsync on the renderer to allow for
  asynchronous prerrendering of the root component.
2019-01-17 08:39:00 -08:00
Nate McMaster 5a70f5312f
Convert Components projects to use ProjectRef (#6698)
This addresses #4246 for src/Components/. A few other changes were necessary because components had been using stale dependencies.
2019-01-16 12:28:04 -08:00