React to WebEncoders changes.

This commit is contained in:
Chris R 2015-10-30 13:30:11 -07:00 committed by Pranav K
parent 53060be2d7
commit 52f4a83139
56 changed files with 361 additions and 444 deletions

View File

@ -5,9 +5,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Localization namespace Microsoft.AspNet.Mvc.Localization
{ {
@ -18,14 +17,14 @@ namespace Microsoft.AspNet.Mvc.Localization
public class HtmlLocalizer : IHtmlLocalizer public class HtmlLocalizer : IHtmlLocalizer
{ {
private IStringLocalizer _localizer; private IStringLocalizer _localizer;
private readonly IHtmlEncoder _encoder; private readonly HtmlEncoder _encoder;
/// <summary> /// <summary>
/// Creates a new <see cref="HtmlLocalizer"/>. /// Creates a new <see cref="HtmlLocalizer"/>.
/// </summary> /// </summary>
/// <param name="localizer">The <see cref="IStringLocalizer"/> to read strings from.</param> /// <param name="localizer">The <see cref="IStringLocalizer"/> to read strings from.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/>.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/>.</param>
public HtmlLocalizer(IStringLocalizer localizer, IHtmlEncoder encoder) public HtmlLocalizer(IStringLocalizer localizer, HtmlEncoder encoder)
{ {
if (localizer == null) if (localizer == null)
{ {
@ -266,7 +265,7 @@ namespace Microsoft.AspNet.Mvc.Localization
{ {
if (tokenBuffer != null && tokenBuffer.Length > 0) if (tokenBuffer != null && tokenBuffer.Length > 0)
{ {
outputBuffer.Append(_encoder.HtmlEncode(string.Format(tokenBuffer.ToString(), arguments))); outputBuffer.Append(_encoder.Encode(string.Format(tokenBuffer.ToString(), arguments)));
} }
} }
} }

View File

@ -2,8 +2,8 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Localization namespace Microsoft.AspNet.Mvc.Localization
{ {
@ -13,14 +13,14 @@ namespace Microsoft.AspNet.Mvc.Localization
public class HtmlLocalizerFactory : IHtmlLocalizerFactory public class HtmlLocalizerFactory : IHtmlLocalizerFactory
{ {
private readonly IStringLocalizerFactory _factory; private readonly IStringLocalizerFactory _factory;
private readonly IHtmlEncoder _encoder; private readonly HtmlEncoder _encoder;
/// <summary> /// <summary>
/// Creates a new <see cref="HtmlLocalizer"/>. /// Creates a new <see cref="HtmlLocalizer"/>.
/// </summary> /// </summary>
/// <param name="localizerFactory">The <see cref="IStringLocalizerFactory"/>.</param> /// <param name="localizerFactory">The <see cref="IStringLocalizerFactory"/>.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/>.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/>.</param>
public HtmlLocalizerFactory(IStringLocalizerFactory localizerFactory, IHtmlEncoder encoder) public HtmlLocalizerFactory(IStringLocalizerFactory localizerFactory, HtmlEncoder encoder)
{ {
if (localizerFactory == null) if (localizerFactory == null)
{ {

View File

@ -3,6 +3,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Razor; using Microsoft.AspNet.Mvc.Razor;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
@ -27,9 +28,9 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
services.TryAdd(ServiceDescriptor.Singleton<IHtmlLocalizerFactory, HtmlLocalizerFactory>()); services.TryAdd(ServiceDescriptor.Singleton<IHtmlLocalizerFactory, HtmlLocalizerFactory>());
services.TryAdd(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(HtmlLocalizer<>))); services.TryAdd(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(HtmlLocalizer<>)));
services.TryAdd(ServiceDescriptor.Transient<IViewLocalizer, ViewLocalizer>()); services.TryAdd(ServiceDescriptor.Transient<IViewLocalizer, ViewLocalizer>());
if (!services.Any(sd => sd.ServiceType == typeof(IHtmlEncoder))) if (!services.Any(sd => sd.ServiceType == typeof(HtmlEncoder)))
{ {
services.TryAdd(ServiceDescriptor.Instance<IHtmlEncoder>(HtmlEncoder.Default)); services.TryAdd(ServiceDescriptor.Instance<HtmlEncoder>(HtmlEncoder.Default));
} }
services.AddLocalization(setupAction); services.AddLocalization(setupAction);

View File

@ -3,9 +3,9 @@
using System; using System;
using System.IO; using System.IO;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor namespace Microsoft.AspNet.Mvc.Razor
{ {
@ -20,8 +20,8 @@ namespace Microsoft.AspNet.Mvc.Razor
/// Creates a new instance of <see cref="HelperResult"/>. /// Creates a new instance of <see cref="HelperResult"/>.
/// </summary> /// </summary>
/// <param name="asyncAction">The asynchronous delegate to invoke when /// <param name="asyncAction">The asynchronous delegate to invoke when
/// <see cref="WriteTo(TextWriter, IHtmlEncoder)"/> is called.</param> /// <see cref="WriteTo(TextWriter, HtmlEncoder)"/> is called.</param>
/// <remarks>Calls to <see cref="WriteTo(TextWriter, IHtmlEncoder)"/> result in a blocking invocation of /// <remarks>Calls to <see cref="WriteTo(TextWriter, HtmlEncoder)"/> result in a blocking invocation of
/// <paramref name="asyncAction"/>.</remarks> /// <paramref name="asyncAction"/>.</remarks>
public HelperResult(Func<TextWriter, Task> asyncAction) public HelperResult(Func<TextWriter, Task> asyncAction)
{ {
@ -34,7 +34,7 @@ namespace Microsoft.AspNet.Mvc.Razor
} }
/// <summary> /// <summary>
/// Gets the asynchronous delegate to invoke when <see cref="WriteTo(TextWriter, IHtmlEncoder)"/> is called. /// Gets the asynchronous delegate to invoke when <see cref="WriteTo(TextWriter, HtmlEncoder)"/> is called.
/// </summary> /// </summary>
public Func<TextWriter, Task> WriteAction public Func<TextWriter, Task> WriteAction
{ {
@ -45,8 +45,8 @@ namespace Microsoft.AspNet.Mvc.Razor
/// Method invoked to produce content from the <see cref="HelperResult"/>. /// Method invoked to produce content from the <see cref="HelperResult"/>.
/// </summary> /// </summary>
/// <param name="writer">The <see cref="TextWriter"/> instance to write to.</param> /// <param name="writer">The <see cref="TextWriter"/> instance to write to.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/> to encode the content.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/> to encode the content.</param>
public virtual void WriteTo(TextWriter writer, IHtmlEncoder encoder) public virtual void WriteTo(TextWriter writer, HtmlEncoder encoder)
{ {
if (writer == null) if (writer == null)
{ {

View File

@ -8,6 +8,7 @@ using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Security.Claims; using System.Security.Claims;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Antiforgery; using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
@ -20,7 +21,6 @@ using Microsoft.AspNet.PageExecutionInstrumentation;
using Microsoft.AspNet.Razor.Runtime.TagHelpers; using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor namespace Microsoft.AspNet.Mvc.Razor
{ {
@ -76,10 +76,10 @@ namespace Microsoft.AspNet.Mvc.Razor
public bool IsPartial { get; set; } public bool IsPartial { get; set; }
/// <summary> /// <summary>
/// Gets the <see cref="IHtmlEncoder"/> to be used for encoding HTML. /// Gets the <see cref="HtmlEncoder"/> to be used for encoding HTML.
/// </summary> /// </summary>
[RazorInject] [RazorInject]
public IHtmlEncoder HtmlEncoder { get; set; } public HtmlEncoder HtmlEncoder { get; set; }
/// <inheritdoc /> /// <inheritdoc />
public IPageExecutionContext PageExecutionContext { get; set; } public IPageExecutionContext PageExecutionContext { get; set; }
@ -423,7 +423,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// <param name="value">The <see cref="object"/> to write.</param> /// <param name="value">The <see cref="object"/> to write.</param>
/// <remarks> /// <remarks>
/// <paramref name="value"/>s of type <see cref="IHtmlContent"/> are written using /// <paramref name="value"/>s of type <see cref="IHtmlContent"/> are written using
/// <see cref="IHtmlContent.WriteTo(TextWriter, IHtmlEncoder)"/>. /// <see cref="IHtmlContent.WriteTo(TextWriter, HtmlEncoder)"/>.
/// For all other types, the encoded result of <see cref="object.ToString"/> is written to the /// For all other types, the encoded result of <see cref="object.ToString"/> is written to the
/// <paramref name="writer"/>. /// <paramref name="writer"/>.
/// </remarks> /// </remarks>
@ -441,7 +441,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="writer"/>. /// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="writer"/>.
/// </summary> /// </summary>
/// <param name="writer">The <see cref="TextWriter"/> instance to write to.</param> /// <param name="writer">The <see cref="TextWriter"/> instance to write to.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/> to use when encoding <paramref name="value"/>.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/> to use when encoding <paramref name="value"/>.</param>
/// <param name="value">The <see cref="object"/> to write.</param> /// <param name="value">The <see cref="object"/> to write.</param>
/// <param name="escapeQuotes"> /// <param name="escapeQuotes">
/// If <c>true</c> escapes double quotes in a <paramref name="value"/> of type <see cref="HtmlString"/>. /// If <c>true</c> escapes double quotes in a <paramref name="value"/> of type <see cref="HtmlString"/>.
@ -449,13 +449,13 @@ namespace Microsoft.AspNet.Mvc.Razor
/// </param> /// </param>
/// <remarks> /// <remarks>
/// <paramref name="value"/>s of type <see cref="IHtmlContent"/> are written using /// <paramref name="value"/>s of type <see cref="IHtmlContent"/> are written using
/// <see cref="IHtmlContent.WriteTo(TextWriter, IHtmlEncoder)"/>. /// <see cref="IHtmlContent.WriteTo(TextWriter, HtmlEncoder)"/>.
/// For all other types, the encoded result of <see cref="object.ToString"/> is written to the /// For all other types, the encoded result of <see cref="object.ToString"/> is written to the
/// <paramref name="writer"/>. /// <paramref name="writer"/>.
/// </remarks> /// </remarks>
public static void WriteTo( public static void WriteTo(
TextWriter writer, TextWriter writer,
IHtmlEncoder encoder, HtmlEncoder encoder,
object value, object value,
bool escapeQuotes) bool escapeQuotes)
{ {
@ -532,11 +532,11 @@ namespace Microsoft.AspNet.Mvc.Razor
WriteTo(writer, HtmlEncoder, value); WriteTo(writer, HtmlEncoder, value);
} }
private static void WriteTo(TextWriter writer, IHtmlEncoder encoder, string value) private static void WriteTo(TextWriter writer, HtmlEncoder encoder, string value)
{ {
if (!string.IsNullOrEmpty(value)) if (!string.IsNullOrEmpty(value))
{ {
encoder.HtmlEncode(value, writer); encoder.Encode(writer, value);
} }
} }

View File

@ -4,10 +4,10 @@
using System; using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor namespace Microsoft.AspNet.Mvc.Razor
{ {
@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// is no longer buffering.</param> /// is no longer buffering.</param>
/// <param name="encoding">The character <see cref="Encoding"/> in which the output is written.</param> /// <param name="encoding">The character <see cref="Encoding"/> in which the output is written.</param>
/// <param name="encoder">The HTML encoder.</param> /// <param name="encoder">The HTML encoder.</param>
public RazorTextWriter(TextWriter unbufferedWriter, Encoding encoding, IHtmlEncoder encoder) public RazorTextWriter(TextWriter unbufferedWriter, Encoding encoding, HtmlEncoder encoder)
{ {
UnbufferedWriter = unbufferedWriter; UnbufferedWriter = unbufferedWriter;
HtmlEncoder = encoder; HtmlEncoder = encoder;
@ -55,7 +55,7 @@ namespace Microsoft.AspNet.Mvc.Razor
private TextWriter TargetWriter { get; set; } private TextWriter TargetWriter { get; set; }
private IHtmlEncoder HtmlEncoder { get; } private HtmlEncoder HtmlEncoder { get; }
/// <inheritdoc /> /// <inheritdoc />
public override void Write(char value) public override void Write(char value)

View File

@ -5,25 +5,25 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.PageExecutionInstrumentation; using Microsoft.AspNet.PageExecutionInstrumentation;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor namespace Microsoft.AspNet.Mvc.Razor
{ {
/// <summary> /// <summary>
/// Default implementation for <see cref="IView"/> that executes one or more <see cref="IRazorPage"/> /// Default implementation for <see cref="IView"/> that executes one or more <see cref="IRazorPage"/>
/// as parts of its exeuction. /// as parts of its execution.
/// </summary> /// </summary>
public class RazorView : IView public class RazorView : IView
{ {
private readonly IRazorViewEngine _viewEngine; private readonly IRazorViewEngine _viewEngine;
private readonly IRazorPageActivator _pageActivator; private readonly IRazorPageActivator _pageActivator;
private readonly IViewStartProvider _viewStartProvider; private readonly IViewStartProvider _viewStartProvider;
private readonly IHtmlEncoder _htmlEncoder; private readonly HtmlEncoder _htmlEncoder;
private IPageExecutionListenerFeature _pageExecutionFeature; private IPageExecutionListenerFeature _pageExecutionFeature;
/// <summary> /// <summary>
@ -41,7 +41,7 @@ namespace Microsoft.AspNet.Mvc.Razor
IRazorPageActivator pageActivator, IRazorPageActivator pageActivator,
IViewStartProvider viewStartProvider, IViewStartProvider viewStartProvider,
IRazorPage razorPage, IRazorPage razorPage,
IHtmlEncoder htmlEncoder, HtmlEncoder htmlEncoder,
bool isPartial) bool isPartial)
{ {
_viewEngine = viewEngine; _viewEngine = viewEngine;

View File

@ -2,8 +2,8 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor namespace Microsoft.AspNet.Mvc.Razor
{ {
@ -13,7 +13,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// </summary> /// </summary>
public class RazorViewFactory : IRazorViewFactory public class RazorViewFactory : IRazorViewFactory
{ {
private readonly IHtmlEncoder _htmlEncoder; private readonly HtmlEncoder _htmlEncoder;
private readonly IRazorPageActivator _pageActivator; private readonly IRazorPageActivator _pageActivator;
private readonly IViewStartProvider _viewStartProvider; private readonly IViewStartProvider _viewStartProvider;
@ -26,7 +26,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public RazorViewFactory( public RazorViewFactory(
IRazorPageActivator pageActivator, IRazorPageActivator pageActivator,
IViewStartProvider viewStartProvider, IViewStartProvider viewStartProvider,
IHtmlEncoder htmlEncoder) HtmlEncoder htmlEncoder)
{ {
_pageActivator = pageActivator; _pageActivator = pageActivator;
_viewStartProvider = viewStartProvider; _viewStartProvider = viewStartProvider;

View File

@ -5,9 +5,9 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Reflection; using System.Reflection;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor.TagHelpers namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
{ {
@ -84,8 +84,8 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
/// Creates a new <see cref="UrlResolutionTagHelper"/>. /// Creates a new <see cref="UrlResolutionTagHelper"/>.
/// </summary> /// </summary>
/// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param> /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
/// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param> /// <param name="htmlEncoder">The <see cref="HtmlEncoder"/>.</param>
public UrlResolutionTagHelper(IUrlHelper urlHelper, IHtmlEncoder htmlEncoder) public UrlResolutionTagHelper(IUrlHelper urlHelper, HtmlEncoder htmlEncoder)
{ {
UrlHelper = urlHelper; UrlHelper = urlHelper;
HtmlEncoder = htmlEncoder; HtmlEncoder = htmlEncoder;
@ -102,7 +102,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
protected IUrlHelper UrlHelper { get; } protected IUrlHelper UrlHelper { get; }
protected IHtmlEncoder HtmlEncoder { get; } protected HtmlEncoder HtmlEncoder { get; }
/// <inheritdoc /> /// <inheritdoc />
public override void Process(TagHelperContext context, TagHelperOutput output) public override void Process(TagHelperContext context, TagHelperOutput output)
@ -221,7 +221,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
} }
var applicationPath = appRelativeUrl.Substring(0, appRelativeUrl.Length - postTildeSlashUrlValue.Length); var applicationPath = appRelativeUrl.Substring(0, appRelativeUrl.Length - postTildeSlashUrlValue.Length);
var encodedApplicationPath = HtmlEncoder.HtmlEncode(applicationPath); var encodedApplicationPath = HtmlEncoder.Encode(applicationPath);
resolvedUrl = string.Concat(encodedApplicationPath, postTildeSlashUrlValue); resolvedUrl = string.Concat(encodedApplicationPath, postTildeSlashUrlValue);
} }

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Mvc.Razor.TagHelpers; using Microsoft.AspNet.Mvc.Razor.TagHelpers;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
@ -9,7 +10,6 @@ using Microsoft.AspNet.Mvc.TagHelpers.Internal;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.TagHelpers namespace Microsoft.AspNet.Mvc.TagHelpers
{ {
@ -41,7 +41,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public ImageTagHelper( public ImageTagHelper(
IHostingEnvironment hostingEnvironment, IHostingEnvironment hostingEnvironment,
IMemoryCache cache, IMemoryCache cache,
IHtmlEncoder htmlEncoder, HtmlEncoder htmlEncoder,
IUrlHelper urlHelper) IUrlHelper urlHelper)
: base(urlHelper, htmlEncoder) : base(urlHelper, htmlEncoder)
{ {

View File

@ -3,7 +3,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using Microsoft.Extensions.WebEncoders; using System.Text.Encodings.Web;
namespace Microsoft.AspNet.Mvc.TagHelpers.Internal namespace Microsoft.AspNet.Mvc.TagHelpers.Internal
{ {
@ -15,7 +15,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Internal
/// <summary> /// <summary>
/// Encodes a .NET string array for safe use as a JavaScript array literal, including inline in an HTML file. /// Encodes a .NET string array for safe use as a JavaScript array literal, including inline in an HTML file.
/// </summary> /// </summary>
public static string Encode(IJavaScriptStringEncoder encoder, IEnumerable<string> values) public static string Encode(JavaScriptEncoder encoder, IEnumerable<string> values)
{ {
var writer = new StringWriter(); var writer = new StringWriter();
@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Internal
writer.Write(','); writer.Write(',');
} }
writer.Write('"'); writer.Write('"');
encoder.JavaScriptStringEncode(value, writer); encoder.Encode(writer, value);
writer.Write('"'); writer.Write('"');
firstAdded = true; firstAdded = true;
} }

View File

@ -5,6 +5,7 @@ using System;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Mvc.Razor.TagHelpers; using Microsoft.AspNet.Mvc.Razor.TagHelpers;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
@ -13,7 +14,6 @@ using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.TagHelpers namespace Microsoft.AspNet.Mvc.TagHelpers
{ {
@ -91,15 +91,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
/// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param> /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
/// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param> /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
/// <param name="cache">The <see cref="IMemoryCache"/>.</param> /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
/// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param> /// <param name="htmlEncoder">The <see cref="HtmlEncoder"/>.</param>
/// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param> /// <param name="javaScriptEncoder">The <see cref="JavaScriptEncoder"/>.</param>
/// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param> /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
public LinkTagHelper( public LinkTagHelper(
ILogger<LinkTagHelper> logger, ILogger<LinkTagHelper> logger,
IHostingEnvironment hostingEnvironment, IHostingEnvironment hostingEnvironment,
IMemoryCache cache, IMemoryCache cache,
IHtmlEncoder htmlEncoder, HtmlEncoder htmlEncoder,
IJavaScriptStringEncoder javaScriptEncoder, JavaScriptEncoder javaScriptEncoder,
IUrlHelper urlHelper) IUrlHelper urlHelper)
: base(urlHelper, htmlEncoder) : base(urlHelper, htmlEncoder)
{ {
@ -208,7 +208,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
protected IMemoryCache Cache { get; } protected IMemoryCache Cache { get; }
protected IJavaScriptStringEncoder JavaScriptEncoder { get; } protected JavaScriptEncoder JavaScriptEncoder { get; }
// Internal for ease of use when testing. // Internal for ease of use when testing.
protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; } protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; }
@ -351,8 +351,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
string.Format( string.Format(
CultureInfo.InvariantCulture, CultureInfo.InvariantCulture,
JavaScriptResources.GetEmbeddedJavaScript(FallbackJavaScriptResourceName), JavaScriptResources.GetEmbeddedJavaScript(FallbackJavaScriptResourceName),
JavaScriptEncoder.JavaScriptStringEncode(FallbackTestProperty), JavaScriptEncoder.Encode(FallbackTestProperty),
JavaScriptEncoder.JavaScriptStringEncode(FallbackTestValue), JavaScriptEncoder.Encode(FallbackTestValue),
JavaScriptStringArrayEncoder.Encode(JavaScriptEncoder, fallbackHrefs))) JavaScriptStringArrayEncoder.Encode(JavaScriptEncoder, fallbackHrefs)))
.AppendHtml("</script>"); .AppendHtml("</script>");
} }

View File

@ -4,6 +4,7 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Mvc.Razor.TagHelpers; using Microsoft.AspNet.Mvc.Razor.TagHelpers;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
@ -12,7 +13,6 @@ using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.TagHelpers namespace Microsoft.AspNet.Mvc.TagHelpers
{ {
@ -77,15 +77,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
/// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param> /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
/// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param> /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
/// <param name="cache">The <see cref="IMemoryCache"/>.</param> /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
/// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param> /// <param name="htmlEncoder">The <see cref="HtmlEncoder"/>.</param>
/// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param> /// <param name="javaScriptEncoder">The <see cref="JavaScriptEncoder"/>.</param>
/// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param> /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
public ScriptTagHelper( public ScriptTagHelper(
ILogger<ScriptTagHelper> logger, ILogger<ScriptTagHelper> logger,
IHostingEnvironment hostingEnvironment, IHostingEnvironment hostingEnvironment,
IMemoryCache cache, IMemoryCache cache,
IHtmlEncoder htmlEncoder, HtmlEncoder htmlEncoder,
IJavaScriptStringEncoder javaScriptEncoder, JavaScriptEncoder javaScriptEncoder,
IUrlHelper urlHelper) IUrlHelper urlHelper)
: base(urlHelper, htmlEncoder) : base(urlHelper, htmlEncoder)
{ {
@ -176,7 +176,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
protected IMemoryCache Cache { get; } protected IMemoryCache Cache { get; }
protected IJavaScriptStringEncoder JavaScriptEncoder { get; } protected JavaScriptEncoder JavaScriptEncoder { get; }
// Internal for ease of use when testing. // Internal for ease of use when testing.
protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; } protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; }
@ -316,9 +316,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{ {
if (!attribute.Name.Equals(SrcAttributeName, StringComparison.OrdinalIgnoreCase)) if (!attribute.Name.Equals(SrcAttributeName, StringComparison.OrdinalIgnoreCase))
{ {
var encodedKey = JavaScriptEncoder.JavaScriptStringEncode(attribute.Name); var encodedKey = JavaScriptEncoder.Encode(attribute.Name);
var attributeValue = attribute.Value.ToString(); var attributeValue = attribute.Value.ToString();
var encodedValue = JavaScriptEncoder.JavaScriptStringEncode(attributeValue); var encodedValue = JavaScriptEncoder.Encode(attributeValue);
AppendAttribute(builder, encodedKey, encodedValue, escapeQuotes: true); AppendAttribute(builder, encodedKey, encodedValue, escapeQuotes: true);
} }
@ -332,7 +332,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
} }
// attribute.Key ("src") does not need to be JavaScript-encoded. // attribute.Key ("src") does not need to be JavaScript-encoded.
var encodedValue = JavaScriptEncoder.JavaScriptStringEncode(attributeValue); var encodedValue = JavaScriptEncoder.Encode(attributeValue);
AppendAttribute(builder, attribute.Name, encodedValue, escapeQuotes: true); AppendAttribute(builder, attribute.Name, encodedValue, escapeQuotes: true);
} }

View File

@ -3,9 +3,9 @@
using System; using System;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Razor; using Microsoft.AspNet.Mvc.Razor;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.TagHelpers namespace Microsoft.AspNet.Mvc.TagHelpers
{ {
@ -18,19 +18,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
/// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="content"/>. /// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="content"/>.
/// </summary> /// </summary>
/// <param name="content">The <see cref="TagHelperContent"/> to write to.</param> /// <param name="content">The <see cref="TagHelperContent"/> to write to.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/> to use when encoding <paramref name="value"/>.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/> to use when encoding <paramref name="value"/>.</param>
/// <param name="encoding">The character encoding in which the <paramref name="value"/> is written.</param> /// <param name="encoding">The character encoding in which the <paramref name="value"/> is written.</param>
/// <param name="value">The <see cref="object"/> to write.</param> /// <param name="value">The <see cref="object"/> to write.</param>
/// <returns><paramref name="content"/> after the write operation has completed.</returns> /// <returns><paramref name="content"/> after the write operation has completed.</returns>
/// <remarks> /// <remarks>
/// <paramref name="value"/>s of type <see cref="Html.Abstractions.IHtmlContent"/> are written using /// <paramref name="value"/>s of type <see cref="Html.Abstractions.IHtmlContent"/> are written using
/// <see cref="Html.Abstractions.IHtmlContent.WriteTo(System.IO.TextWriter, IHtmlEncoder)"/>. /// <see cref="Html.Abstractions.IHtmlContent.WriteTo(System.IO.TextWriter, HtmlEncoder)"/>.
/// For all other types, the encoded result of <see cref="object.ToString"/> /// For all other types, the encoded result of <see cref="object.ToString"/>
/// is written to the <paramref name="content"/>. /// is written to the <paramref name="content"/>.
/// </remarks> /// </remarks>
public static TagHelperContent Append( public static TagHelperContent Append(
this TagHelperContent content, this TagHelperContent content,
IHtmlEncoder encoder, HtmlEncoder encoder,
Encoding encoding, Encoding encoding,
object value) object value)
{ {

View File

@ -3,8 +3,8 @@
using System; using System;
using System.IO; using System.IO;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Rendering namespace Microsoft.AspNet.Mvc.Rendering
{ {
@ -35,7 +35,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
} }
/// <inheritdoc /> /// <inheritdoc />
public void WriteTo(TextWriter writer, IHtmlEncoder encoder) public void WriteTo(TextWriter writer, HtmlEncoder encoder)
{ {
if (writer == null) if (writer == null)
{ {

View File

@ -3,12 +3,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.ModelBinding.Validation; using Microsoft.AspNet.Mvc.ModelBinding.Validation;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Rendering namespace Microsoft.AspNet.Mvc.Rendering
{ {
@ -55,14 +55,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
ITempDataDictionary TempData { get; } ITempDataDictionary TempData { get; }
/// <summary> /// <summary>
/// Gets the <see cref="IUrlEncoder"/> to be used for encoding a URL. /// Gets the <see cref="UrlEncoder"/> to be used for encoding a URL.
/// </summary> /// </summary>
IUrlEncoder UrlEncoder { get; } UrlEncoder UrlEncoder { get; }
/// <summary> /// <summary>
/// Gets the <see cref="IJavaScriptStringEncoder"/> to be used for encoding JavaScript. /// Gets the <see cref="JavaScriptEncoder"/> to be used for encoding JavaScript.
/// </summary> /// </summary>
IJavaScriptStringEncoder JavaScriptStringEncoder { get; } JavaScriptEncoder JavaScriptEncoder { get; }
/// <summary> /// <summary>
/// Returns an anchor (&lt;a&gt;) element that contains a URL path to the specified action. /// Returns an anchor (&lt;a&gt;) element that contains a URL path to the specified action.

View File

@ -2,8 +2,8 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.AspNet.Mvc.Rendering namespace Microsoft.AspNet.Mvc.Rendering
@ -61,10 +61,10 @@ namespace Microsoft.AspNet.Mvc.Rendering
var writer = _viewContext.Writer; var writer = _viewContext.Writer;
var htmlWriter = writer as HtmlTextWriter; var htmlWriter = writer as HtmlTextWriter;
IHtmlEncoder htmlEncoder = null; HtmlEncoder htmlEncoder = null;
if (htmlWriter == null) if (htmlWriter == null)
{ {
htmlEncoder = _viewContext.HttpContext.RequestServices.GetRequiredService<IHtmlEncoder>(); htmlEncoder = _viewContext.HttpContext.RequestServices.GetRequiredService<HtmlEncoder>();
} }
foreach (var content in formContext.EndOfFormContent) foreach (var content in formContext.EndOfFormContent)

View File

@ -7,10 +7,10 @@ using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.Internal; using Microsoft.Extensions.Internal;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Rendering namespace Microsoft.AspNet.Mvc.Rendering
{ {
@ -189,7 +189,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
} }
} }
private void AppendAttributes(TextWriter writer, IHtmlEncoder encoder) private void AppendAttributes(TextWriter writer, HtmlEncoder encoder)
{ {
// Perf: Avoid allocating enumerator for `_attributes` if possible // Perf: Avoid allocating enumerator for `_attributes` if possible
if (_attributes != null && _attributes.Count > 0) if (_attributes != null && _attributes.Count > 0)
@ -206,7 +206,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
writer.Write(" "); writer.Write(" ");
writer.Write(key); writer.Write(key);
writer.Write("=\""); writer.Write("=\"");
encoder.HtmlEncode(attribute.Value, writer); encoder.Encode(writer, attribute.Value);
writer.Write("\""); writer.Write("\"");
} }
} }
@ -250,7 +250,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
} }
/// <inheritdoc /> /// <inheritdoc />
public void WriteTo(TextWriter writer, IHtmlEncoder encoder) public void WriteTo(TextWriter writer, HtmlEncoder encoder)
{ {
switch (TagRenderMode) switch (TagRenderMode)
{ {

View File

@ -8,6 +8,7 @@ using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Antiforgery; using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
@ -16,7 +17,6 @@ using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.Extensions.Internal; using Microsoft.Extensions.Internal;
using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.ViewFeatures namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
private readonly IClientModelValidatorProvider _clientModelValidatorProvider; private readonly IClientModelValidatorProvider _clientModelValidatorProvider;
private readonly IModelMetadataProvider _metadataProvider; private readonly IModelMetadataProvider _metadataProvider;
private readonly IUrlHelper _urlHelper; private readonly IUrlHelper _urlHelper;
private readonly IHtmlEncoder _htmlEncoder; private readonly HtmlEncoder _htmlEncoder;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="DefaultHtmlGenerator"/> class. /// Initializes a new instance of the <see cref="DefaultHtmlGenerator"/> class.
@ -40,13 +40,13 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
/// <param name="optionsAccessor">The accessor for <see cref="MvcOptions"/>.</param> /// <param name="optionsAccessor">The accessor for <see cref="MvcOptions"/>.</param>
/// <param name="metadataProvider">The <see cref="IModelMetadataProvider"/>.</param> /// <param name="metadataProvider">The <see cref="IModelMetadataProvider"/>.</param>
/// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param> /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
/// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param> /// <param name="htmlEncoder">The <see cref="HtmlEncoder"/>.</param>
public DefaultHtmlGenerator( public DefaultHtmlGenerator(
IAntiforgery antiforgery, IAntiforgery antiforgery,
IOptions<MvcViewOptions> optionsAccessor, IOptions<MvcViewOptions> optionsAccessor,
IModelMetadataProvider metadataProvider, IModelMetadataProvider metadataProvider,
IUrlHelper urlHelper, IUrlHelper urlHelper,
IHtmlEncoder htmlEncoder) HtmlEncoder htmlEncoder)
{ {
if (antiforgery == null) if (antiforgery == null)
{ {
@ -90,13 +90,13 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
/// <inheritdoc /> /// <inheritdoc />
public string Encode(string value) public string Encode(string value)
{ {
return !string.IsNullOrEmpty(value) ? _htmlEncoder.HtmlEncode(value) : string.Empty; return !string.IsNullOrEmpty(value) ? _htmlEncoder.Encode(value) : string.Empty;
} }
/// <inheritdoc /> /// <inheritdoc />
public string Encode(object value) public string Encode(object value)
{ {
return (value != null) ? _htmlEncoder.HtmlEncode(value.ToString()) : string.Empty; return (value != null) ? _htmlEncoder.Encode(value.ToString()) : string.Empty;
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
@ -14,7 +15,6 @@ using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.Extensions.Internal; using Microsoft.Extensions.Internal;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.ViewFeatures namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
@ -32,7 +32,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
private readonly IHtmlGenerator _htmlGenerator; private readonly IHtmlGenerator _htmlGenerator;
private readonly ICompositeViewEngine _viewEngine; private readonly ICompositeViewEngine _viewEngine;
private readonly IHtmlEncoder _htmlEncoder; private readonly HtmlEncoder _htmlEncoder;
private ViewContext _viewContext; private ViewContext _viewContext;
@ -43,9 +43,9 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
IHtmlGenerator htmlGenerator, IHtmlGenerator htmlGenerator,
ICompositeViewEngine viewEngine, ICompositeViewEngine viewEngine,
IModelMetadataProvider metadataProvider, IModelMetadataProvider metadataProvider,
IHtmlEncoder htmlEncoder, HtmlEncoder htmlEncoder,
IUrlEncoder urlEncoder, UrlEncoder urlEncoder,
IJavaScriptStringEncoder javaScriptStringEncoder) JavaScriptEncoder javaScriptEncoder)
{ {
if (htmlGenerator == null) if (htmlGenerator == null)
{ {
@ -72,9 +72,9 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
throw new ArgumentNullException(nameof(urlEncoder)); throw new ArgumentNullException(nameof(urlEncoder));
} }
if (javaScriptStringEncoder == null) if (javaScriptEncoder == null)
{ {
throw new ArgumentNullException(nameof(javaScriptStringEncoder)); throw new ArgumentNullException(nameof(javaScriptEncoder));
} }
_viewEngine = viewEngine; _viewEngine = viewEngine;
@ -82,7 +82,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
_htmlEncoder = htmlEncoder; _htmlEncoder = htmlEncoder;
MetadataProvider = metadataProvider; MetadataProvider = metadataProvider;
UrlEncoder = urlEncoder; UrlEncoder = urlEncoder;
JavaScriptStringEncoder = javaScriptStringEncoder; JavaScriptEncoder = javaScriptEncoder;
} }
/// <inheritdoc /> /// <inheritdoc />
@ -153,10 +153,10 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
} }
/// <inheritdoc /> /// <inheritdoc />
public IUrlEncoder UrlEncoder { get; } public UrlEncoder UrlEncoder { get; }
/// <inheritdoc /> /// <inheritdoc />
public IJavaScriptStringEncoder JavaScriptStringEncoder { get; } public JavaScriptEncoder JavaScriptEncoder { get; }
/// <inheritdoc /> /// <inheritdoc />
public IModelMetadataProvider MetadataProvider { get; } public IModelMetadataProvider MetadataProvider { get; }

View File

@ -4,11 +4,11 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.ViewFeatures namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
@ -21,10 +21,10 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
IHtmlGenerator htmlGenerator, IHtmlGenerator htmlGenerator,
ICompositeViewEngine viewEngine, ICompositeViewEngine viewEngine,
IModelMetadataProvider metadataProvider, IModelMetadataProvider metadataProvider,
IHtmlEncoder htmlEncoder, HtmlEncoder htmlEncoder,
IUrlEncoder urlEncoder, UrlEncoder urlEncoder,
IJavaScriptStringEncoder javaScriptStringEncoder) JavaScriptEncoder javaScriptEncoder)
: base(htmlGenerator, viewEngine, metadataProvider, htmlEncoder, urlEncoder, javaScriptStringEncoder) : base(htmlGenerator, viewEngine, metadataProvider, htmlEncoder, urlEncoder, javaScriptEncoder)
{ {
if (htmlGenerator == null) if (htmlGenerator == null)
{ {
@ -46,9 +46,9 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
throw new ArgumentNullException(nameof(urlEncoder)); throw new ArgumentNullException(nameof(urlEncoder));
} }
if (javaScriptStringEncoder == null) if (javaScriptEncoder == null)
{ {
throw new ArgumentNullException(nameof(javaScriptStringEncoder)); throw new ArgumentNullException(nameof(javaScriptEncoder));
} }
} }

View File

@ -6,9 +6,9 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.ViewFeatures namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
@ -180,8 +180,8 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
/// are copied. It is just written to the <paramref name="writer"/> otherwise. /// are copied. It is just written to the <paramref name="writer"/> otherwise.
/// </summary> /// </summary>
/// <param name="writer">The <see cref="TextWriter"/> to which the content must be copied/written.</param> /// <param name="writer">The <see cref="TextWriter"/> to which the content must be copied/written.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/> to encode the copied/written content.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/> to encode the copied/written content.</param>
public void CopyTo(TextWriter writer, IHtmlEncoder encoder) public void CopyTo(TextWriter writer, HtmlEncoder encoder)
{ {
var targetStringCollectionWriter = writer as StringCollectionTextWriter; var targetStringCollectionWriter = writer as StringCollectionTextWriter;
if (targetStringCollectionWriter != null) if (targetStringCollectionWriter != null)
@ -199,8 +199,8 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
/// are copied. It is just written to the <paramref name="writer"/> otherwise. /// are copied. It is just written to the <paramref name="writer"/> otherwise.
/// </summary> /// </summary>
/// <param name="writer">The <see cref="TextWriter"/> to which the content must be copied/written.</param> /// <param name="writer">The <see cref="TextWriter"/> to which the content must be copied/written.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/> to encode the copied/written content.</param> /// <param name="encoder">The <see cref="HtmlEncoder"/> to encode the copied/written content.</param>
public Task CopyToAsync(TextWriter writer, IHtmlEncoder encoder) public Task CopyToAsync(TextWriter writer, HtmlEncoder encoder)
{ {
CopyTo(writer, encoder); CopyTo(writer, encoder);
return _completedTask; return _completedTask;
@ -226,7 +226,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
_entries.Add(content); _entries.Add(content);
} }
public void WriteTo(TextWriter writer, IHtmlEncoder encoder) public void WriteTo(TextWriter writer, HtmlEncoder encoder)
{ {
foreach (var item in _entries) foreach (var item in _entries)
{ {

View File

@ -4,8 +4,8 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.ViewFeatures namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
@ -27,7 +27,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
} }
/// <inheritdoc /> /// <inheritdoc />
public void WriteTo(TextWriter writer, IHtmlEncoder encoder) public void WriteTo(TextWriter writer, HtmlEncoder encoder)
{ {
if (writer == null) if (writer == null)
{ {
@ -39,7 +39,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
throw new ArgumentNullException(nameof(encoder)); throw new ArgumentNullException(nameof(encoder));
} }
encoder.HtmlEncode(_input, writer); encoder.Encode(writer, _input);
} }
private string DebuggerToString() private string DebuggerToString()

View File

@ -1,8 +1,8 @@
// Copyright (c) .NET Foundation. All rights reserved. // 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. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Text.Encodings.Web;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
namespace Microsoft.AspNet.Mvc.FunctionalTests namespace Microsoft.AspNet.Mvc.FunctionalTests
@ -12,9 +12,9 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
{ {
protected override void AddAdditionalServices(IServiceCollection services) protected override void AddAdditionalServices(IServiceCollection services)
{ {
services.AddTransient<IHtmlEncoder, CommonTestEncoder>(); services.AddTransient<HtmlEncoder, HtmlTestEncoder>();
services.AddTransient<IJavaScriptStringEncoder, CommonTestEncoder>(); services.AddTransient<JavaScriptEncoder, JavaScriptTestEncoder>();
services.AddTransient<IUrlEncoder, CommonTestEncoder>(); services.AddTransient<UrlEncoder, UrlTestEncoder>();
} }
} }
} }

View File

@ -39,63 +39,63 @@
<!-- Fallback to static href --> <!-- Fallback to static href -->
<link href="HtmlEncode[[/styles/site.min.css?a=b&c=d]]" rel="stylesheet" data-extra="test" title="&quot;the&quot; title" /> <link href="HtmlEncode[[/styles/site.min.css?a=b&c=d]]" rel="stylesheet" data-extra="test" title="&quot;the&quot; title" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css?a=b&c=d]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css?a=b&c=d]]"]);</script>
<!-- Fallback from globbed href to static href --> <!-- Fallback from globbed href to static href -->
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback from globbed href with exclude to static href --> <!-- Fallback from globbed href with exclude to static href -->
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback from globbed and static href to static href --> <!-- Fallback from globbed and static href to static href -->
<link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" /><link href="HtmlEncode[[/styles/site.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" /><link href="HtmlEncode[[/styles/site.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback from globbed and static href with exclude to static href --> <!-- Fallback from globbed and static href with exclude to static href -->
<link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback to static href with no primary href --> <!-- Fallback to static href with no primary href -->
<link rel="stylesheet" data-extra="test"> <link rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback to globbed href --> <!-- Fallback to globbed href -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback to static and globbed href --> <!-- Fallback to static and globbed href -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]","JavaScriptStringEncode[[/styles/sub/site2.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]","JavaScriptEncode[[/styles/sub/site2.css]]"]);</script>
<!-- Fallback to static and globbed href should dedupe --> <!-- Fallback to static and globbed href should dedupe -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback to static and globbed href with exclude --> <!-- Fallback to static and globbed href with exclude -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]","JavaScriptStringEncode[[/styles/sub/site2.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]","JavaScriptEncode[[/styles/sub/site2.css]]"]);</script>
<!-- Fallback from globbed href to glbobed href --> <!-- Fallback from globbed href to glbobed href -->
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback from globbed href with exclude to globbed href --> <!-- Fallback from globbed href with exclude to globbed href -->
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback from globbed and static href to globbed href --> <!-- Fallback from globbed and static href to globbed href -->
<link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" /><link href="HtmlEncode[[/styles/site.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" /><link href="HtmlEncode[[/styles/site.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Fallback from globbed and static href with exclude to globbed href --> <!-- Fallback from globbed and static href with exclude to globbed href -->
<link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test"> <link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]"]);</script>
<!-- Kitchen sink, all the attributes --> <!-- Kitchen sink, all the attributes -->
<link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[styles/site.min.css]]" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css]]","JavaScriptStringEncode[[/styles/sub/site2.css]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css]]","JavaScriptEncode[[/styles/sub/site2.css]]"]);</script>
<!-- Fallback to globbed href that doesn't exist --> <!-- Fallback to globbed href that doesn't exist -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" /> <link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" />
@ -120,7 +120,7 @@
<!-- Fallback with file version --> <!-- Fallback with file version -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test"> <link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptStringEncode[[visibility]]","JavaScriptStringEncode[[hidden]]",["JavaScriptStringEncode[[/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc]]"]);</script> <meta name="x-stylesheet-fallback-test" class="HtmlEncode[[hidden]]" /><script>!function(a,b,c){var d,e=document,f=e.getElementsByTagName("SCRIPT"),g=f[f.length-1].previousElementSibling,h=e.defaultView&&e.defaultView.getComputedStyle?e.defaultView.getComputedStyle(g):g.currentStyle;if(h&&h[a]!==b)for(d=0;d<c.length;d++)e.write('<link rel="stylesheet" href="'+c[d]+'"/>')}("JavaScriptEncode[[visibility]]","JavaScriptEncode[[hidden]]",["JavaScriptEncode[[/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc]]"]);</script>
<!-- Globbed link tag with existing file, static href and file version --> <!-- Globbed link tag with existing file, static href and file version -->
<link href="HtmlEncode[[/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc]]" rel="stylesheet" /><link href="HtmlEncode[[/styles/sub/site2.css?v=30cxPex0tA9xEatW7f1Qhnn8tVLAHgE6xwIZhESq0y0]]" rel="stylesheet" /><link href="HtmlEncode[[/styles/sub/site3.css?v=fSxxOr1Q4Dq2uPuzlju5UYGuK0SKABI-ghvaIGEsZDc]]" rel="stylesheet" /><link href="HtmlEncode[[/styles/sub/site3.min.css?v=s8JMmAZxBn0dzuhRtQ0wgOvNBK4XRJRWEC2wfzsVF9M]]" rel="stylesheet" /> <link href="HtmlEncode[[/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc]]" rel="stylesheet" /><link href="HtmlEncode[[/styles/sub/site2.css?v=30cxPex0tA9xEatW7f1Qhnn8tVLAHgE6xwIZhESq0y0]]" rel="stylesheet" /><link href="HtmlEncode[[/styles/sub/site3.css?v=fSxxOr1Q4Dq2uPuzlju5UYGuK0SKABI-ghvaIGEsZDc]]" rel="stylesheet" /><link href="HtmlEncode[[/styles/sub/site3.min.css?v=s8JMmAZxBn0dzuhRtQ0wgOvNBK4XRJRWEC2wfzsVF9M]]" rel="stylesheet" />

View File

@ -13,27 +13,27 @@
<script src="HtmlEncode[[/blank.js?a=b&c=d]]" data-foo="foo-data2" title="&lt;the title>"> <script src="HtmlEncode[[/blank.js?a=b&c=d]]" data-foo="foo-data2" title="&lt;the title>">
// TagHelper script with comment in body, and extra properties. // TagHelper script with comment in body, and extra properties.
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js?a=b&c=d]]\" JavaScriptStringEncode[[data-foo]]=\"JavaScriptStringEncode[[foo-data2]]\" JavaScriptStringEncode[[title]]=\"JavaScriptStringEncode[[&lt;the title>]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js?a=b&c=d]]\" JavaScriptEncode[[data-foo]]=\"JavaScriptEncode[[foo-data2]]\" JavaScriptEncode[[title]]=\"JavaScriptEncode[[&lt;the title>]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]" title="&quot;the&quot; title"> <script src="HtmlEncode[[/blank.js]]" title="&quot;the&quot; title">
// Fallback to globbed src // Fallback to globbed src
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js]]\" JavaScriptStringEncode[[title]]=\"JavaScriptStringEncode[["the" title]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js]]\" JavaScriptEncode[[title]]=\"JavaScriptEncode[["the" title]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to globbed src with exclude // Fallback to globbed src with exclude
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js]]\"><\/script><script src=\"JavaScriptStringEncode[[/styles/sub/site2.js]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js]]\"><\/script><script src=\"JavaScriptEncode[[/styles/sub/site2.js]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to globbed and static src // Fallback to globbed and static src
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js]]\"><\/script><script src=\"JavaScriptStringEncode[[/styles/sub/site2.js]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js]]\"><\/script><script src=\"JavaScriptEncode[[/styles/sub/site2.js]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to globbed and static src should de-dupe // Fallback to globbed and static src should de-dupe
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to globbed src with missing include // Fallback to globbed src with missing include
@ -42,7 +42,7 @@
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to static and globbed src with missing include // Fallback to static and globbed src with missing include
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to globbed src outside of webroot // Fallback to globbed src outside of webroot
@ -55,7 +55,7 @@
<script data-foo="foo-data3"> <script data-foo="foo-data3">
// Valid TagHelper (although no src is provided) script with comment in body, and extra properties. // Valid TagHelper (although no src is provided) script with comment in body, and extra properties.
</script> </script>
<script>(false||document.write("<script JavaScriptStringEncode[[data-foo]]=\"JavaScriptStringEncode[[foo-data3]]\" src=\"JavaScriptStringEncode[[/styles/site.js]]\"><\/script>"));</script> <script>(false||document.write("<script JavaScriptEncode[[data-foo]]=\"JavaScriptEncode[[foo-data3]]\" src=\"JavaScriptEncode[[/styles/site.js]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Invalid TagHelper script with comment in body. // Invalid TagHelper script with comment in body.
@ -98,12 +98,12 @@
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// TagHelper script with comment in body, and file version. // TagHelper script with comment in body, and file version.
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I]]\"><\/script>"));</script>
<script src="HtmlEncode[[/blank.js]]"> <script src="HtmlEncode[[/blank.js]]">
// Fallback to globbed src with file version. // Fallback to globbed src with file version.
</script> </script>
<script>(false||document.write("<script src=\"JavaScriptStringEncode[[/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I]]\"><\/script>"));</script> <script>(false||document.write("<script src=\"JavaScriptEncode[[/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I]]\"><\/script>"));</script>
<script src="HtmlEncode[[/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I]]"> <script src="HtmlEncode[[/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I]]">
// Regular script with comment in body, and file version. // Regular script with comment in body, and file version.

View File

@ -21,7 +21,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>(); var stringLocalizer = new Mock<IStringLocalizer>();
stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString); stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder()); var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act // Act
var actualLocalizedString = htmlLocalizer["Hello"]; var actualLocalizedString = htmlLocalizer["Hello"];
@ -39,7 +39,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>(); var stringLocalizer = new Mock<IStringLocalizer>();
stringLocalizer.Setup(s => s["Hello", "test"]).Returns(localizedString); stringLocalizer.Setup(s => s["Hello", "test"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder()); var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act // Act
var actualLocalizedString = htmlLocalizer["Hello", "test"]; var actualLocalizedString = htmlLocalizer["Hello", "test"];
@ -102,7 +102,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>(); var stringLocalizer = new Mock<IStringLocalizer>();
stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString); stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder()); var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act // Act
var localizedHtmlString = htmlLocalizer.Html("Hello", arguments); var localizedHtmlString = htmlLocalizer.Html("Hello", arguments);
@ -141,7 +141,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>(); var stringLocalizer = new Mock<IStringLocalizer>();
stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString); stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder()); var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act // Act
var exception = Assert.Throws<FormatException>(() => htmlLocalizer.Html("Hello", new object[] { })); var exception = Assert.Throws<FormatException>(() => htmlLocalizer.Html("Hello", new object[] { }));

View File

@ -4,13 +4,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Razor; using Microsoft.AspNet.Mvc.Razor;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
using Xunit; using Xunit;
@ -57,7 +56,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
}, },
service => service =>
{ {
Assert.Equal(typeof(IHtmlEncoder), service.ServiceType); Assert.Equal(typeof(HtmlEncoder), service.ServiceType);
Assert.Equal(ServiceLifetime.Singleton, service.Lifetime); Assert.Equal(ServiceLifetime.Singleton, service.Lifetime);
}, },
service => service =>
@ -84,13 +83,13 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
{ {
// Arrange // Arrange
var collection = new ServiceCollection(); var collection = new ServiceCollection();
var testEncoder = new CommonTestEncoder(); var testEncoder = new HtmlTestEncoder();
// Act // Act
collection.Add(ServiceDescriptor.Singleton(typeof(IHtmlLocalizerFactory), typeof(TestHtmlLocalizerFactory))); collection.Add(ServiceDescriptor.Singleton(typeof(IHtmlLocalizerFactory), typeof(TestHtmlLocalizerFactory)));
collection.Add(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(TestHtmlLocalizer<>))); collection.Add(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(TestHtmlLocalizer<>)));
collection.Add(ServiceDescriptor.Transient(typeof(IViewLocalizer), typeof(TestViewLocalizer))); collection.Add(ServiceDescriptor.Transient(typeof(IViewLocalizer), typeof(TestViewLocalizer)));
collection.Add(ServiceDescriptor.Instance(typeof(IHtmlEncoder), testEncoder)); collection.Add(ServiceDescriptor.Instance(typeof(HtmlEncoder), testEncoder));
MvcLocalizationServices.AddLocalizationServices( MvcLocalizationServices.AddLocalizationServices(
collection, collection,
@ -119,7 +118,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
}, },
service => service =>
{ {
Assert.Equal(typeof(IHtmlEncoder), service.ServiceType); Assert.Equal(typeof(HtmlEncoder), service.ServiceType);
Assert.Same(testEncoder, service.ImplementationInstance); Assert.Same(testEncoder, service.ImplementationInstance);
}, },
service => service =>
@ -165,7 +164,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
collection.Add(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(TestHtmlLocalizer<>))); collection.Add(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(TestHtmlLocalizer<>)));
collection.Add(ServiceDescriptor.Transient(typeof(IHtmlLocalizer), typeof(TestViewLocalizer))); collection.Add(ServiceDescriptor.Transient(typeof(IHtmlLocalizer), typeof(TestViewLocalizer)));
collection.Add(ServiceDescriptor.Instance(typeof(IHtmlEncoder), typeof(CommonTestEncoder))); collection.Add(ServiceDescriptor.Instance(typeof(HtmlEncoder), typeof(HtmlTestEncoder)));
// Assert // Assert
Assert.Collection(collection, Assert.Collection(collection,
@ -199,7 +198,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
}, },
service => service =>
{ {
Assert.Equal(typeof(IHtmlEncoder), service.ServiceType); Assert.Equal(typeof(HtmlEncoder), service.ServiceType);
Assert.Equal(ServiceLifetime.Singleton, service.Lifetime); Assert.Equal(ServiceLifetime.Singleton, service.Lifetime);
}, },
service => service =>
@ -233,8 +232,8 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
}, },
service => service =>
{ {
Assert.Equal(typeof(IHtmlEncoder), service.ServiceType); Assert.Equal(typeof(HtmlEncoder), service.ServiceType);
Assert.Equal(typeof(CommonTestEncoder), service.ImplementationInstance); Assert.Equal(typeof(HtmlTestEncoder), service.ImplementationInstance);
Assert.Equal(ServiceLifetime.Singleton, service.Lifetime); Assert.Equal(ServiceLifetime.Singleton, service.Lifetime);
}); });
} }
@ -278,7 +277,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
}, },
service => service =>
{ {
Assert.Equal(typeof(IHtmlEncoder), service.ServiceType); Assert.Equal(typeof(HtmlEncoder), service.ServiceType);
Assert.Equal(ServiceLifetime.Singleton, service.Lifetime); Assert.Equal(ServiceLifetime.Singleton, service.Lifetime);
}, },
service => service =>

View File

@ -4,6 +4,7 @@
using System; using System;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Abstractions; using Microsoft.AspNet.Mvc.Abstractions;
@ -14,7 +15,6 @@ using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
using Moq; using Moq;
using Xunit; using Xunit;
@ -32,13 +32,13 @@ namespace Microsoft.AspNet.Mvc.Razor
var myService = new MyService(); var myService = new MyService();
var helper = Mock.Of<IHtmlHelper<object>>(); var helper = Mock.Of<IHtmlHelper<object>>();
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var serviceProvider = new Mock<IServiceProvider>(); var serviceProvider = new Mock<IServiceProvider>();
serviceProvider.Setup(p => p.GetService(typeof(MyService))) serviceProvider.Setup(p => p.GetService(typeof(MyService)))
.Returns(myService); .Returns(myService);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>))) serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>)))
.Returns(helper); .Returns(helper);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) serviceProvider.Setup(p => p.GetService(typeof(HtmlEncoder)))
.Returns(htmlEncoder); .Returns(htmlEncoder);
var httpContext = new Mock<HttpContext>(); var httpContext = new Mock<HttpContext>();
httpContext.SetupGet(c => c.RequestServices) httpContext.SetupGet(c => c.RequestServices)
@ -103,13 +103,13 @@ namespace Microsoft.AspNet.Mvc.Razor
var myService = new MyService(); var myService = new MyService();
var helper = Mock.Of<IHtmlHelper<object>>(); var helper = Mock.Of<IHtmlHelper<object>>();
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var serviceProvider = new Mock<IServiceProvider>(); var serviceProvider = new Mock<IServiceProvider>();
serviceProvider.Setup(p => p.GetService(typeof(MyService))) serviceProvider.Setup(p => p.GetService(typeof(MyService)))
.Returns(myService); .Returns(myService);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>))) serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>)))
.Returns(helper); .Returns(helper);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) serviceProvider.Setup(p => p.GetService(typeof(HtmlEncoder)))
.Returns(htmlEncoder); .Returns(htmlEncoder);
var httpContext = new Mock<HttpContext>(); var httpContext = new Mock<HttpContext>();
httpContext.SetupGet(c => c.RequestServices) httpContext.SetupGet(c => c.RequestServices)
@ -142,13 +142,13 @@ namespace Microsoft.AspNet.Mvc.Razor
var instance = new TestRazorPage(); var instance = new TestRazorPage();
var myService = new MyService(); var myService = new MyService();
var helper = Mock.Of<IHtmlHelper<object>>(); var helper = Mock.Of<IHtmlHelper<object>>();
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var serviceProvider = new Mock<IServiceProvider>(); var serviceProvider = new Mock<IServiceProvider>();
serviceProvider.Setup(p => p.GetService(typeof(MyService))) serviceProvider.Setup(p => p.GetService(typeof(MyService)))
.Returns(myService); .Returns(myService);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>))) serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>)))
.Returns(helper); .Returns(helper);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) serviceProvider.Setup(p => p.GetService(typeof(HtmlEncoder)))
.Returns(htmlEncoder); .Returns(htmlEncoder);
var httpContext = new Mock<HttpContext>(); var httpContext = new Mock<HttpContext>();
httpContext.SetupGet(c => c.RequestServices) httpContext.SetupGet(c => c.RequestServices)
@ -181,13 +181,13 @@ namespace Microsoft.AspNet.Mvc.Razor
var instance = new DoesNotDeriveFromRazorPageOfTButHasModelProperty(); var instance = new DoesNotDeriveFromRazorPageOfTButHasModelProperty();
var myService = new MyService(); var myService = new MyService();
var helper = Mock.Of<IHtmlHelper<object>>(); var helper = Mock.Of<IHtmlHelper<object>>();
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var serviceProvider = new Mock<IServiceProvider>(); var serviceProvider = new Mock<IServiceProvider>();
serviceProvider.Setup(p => p.GetService(typeof(MyService))) serviceProvider.Setup(p => p.GetService(typeof(MyService)))
.Returns(myService); .Returns(myService);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>))) serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper<object>)))
.Returns(helper); .Returns(helper);
serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) serviceProvider.Setup(p => p.GetService(typeof(HtmlEncoder)))
.Returns(htmlEncoder); .Returns(htmlEncoder);
var httpContext = new Mock<HttpContext>(); var httpContext = new Mock<HttpContext>();
httpContext.SetupGet(c => c.RequestServices) httpContext.SetupGet(c => c.RequestServices)

View File

@ -37,7 +37,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var viewContext = CreateViewContext(); var viewContext = CreateViewContext();
var page = CreatePage(v => var page = CreatePage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Write("Hello Prefix"); v.Write("Hello Prefix");
v.StartTagHelperWritingScope(); v.StartTagHelperWritingScope();
v.Write("Hello from Output"); v.Write("Hello from Output");
@ -63,7 +63,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var viewContext = CreateViewContext(); var viewContext = CreateViewContext();
var page = CreatePage(v => var page = CreatePage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Write("Hello Prefix"); v.Write("Hello Prefix");
v.StartTagHelperWritingScope(); v.StartTagHelperWritingScope();
v.Write("Hello In Scope"); v.Write("Hello In Scope");
@ -87,7 +87,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var viewContext = CreateViewContext(); var viewContext = CreateViewContext();
var page = CreatePage(v => var page = CreatePage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Write("Hello Prefix"); v.Write("Hello Prefix");
v.StartTagHelperWritingScope(); v.StartTagHelperWritingScope();
v.Write("Hello In Scope Pre Nest"); v.Write("Hello In Scope Pre Nest");
@ -161,7 +161,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Act // Act
var page = CreatePage(v => var page = CreatePage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.StartTagHelperWritingScope(); v.StartTagHelperWritingScope();
v.Write("Hello World!"); v.Write("Hello World!");
var returnValue = v.EndTagHelperWritingScope(); var returnValue = v.EndTagHelperWritingScope();
@ -182,7 +182,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Act // Act
var page = CreatePage(v => var page = CreatePage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.StartTagHelperWritingScope(new RazorTextWriter(TextWriter.Null, Encoding.UTF8, v.HtmlEncoder)); v.StartTagHelperWritingScope(new RazorTextWriter(TextWriter.Null, Encoding.UTF8, v.HtmlEncoder));
v.Write("Hello "); v.Write("Hello ");
v.Write("World!"); v.Write("World!");
@ -560,7 +560,7 @@ namespace Microsoft.AspNet.Mvc.Razor
.Verifiable(); .Verifiable();
var page = CreatePage(v => var page = CreatePage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Write(v.Href("url")); v.Write(v.Href("url"));
}); });
var services = new Mock<IServiceProvider>(); var services = new Mock<IServiceProvider>();
@ -664,7 +664,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Arrange // Arrange
var page = CreatePage(p => var page = CreatePage(p =>
{ {
p.HtmlEncoder = new CommonTestEncoder(); p.HtmlEncoder = new HtmlTestEncoder();
p.BeginWriteAttribute("href", "prefix", 0, "suffix", 34, 2); p.BeginWriteAttribute("href", "prefix", 0, "suffix", 34, 2);
p.WriteAttributeValue("prefix", 0, "attr1-value", 8, 14, true); p.WriteAttributeValue("prefix", 0, "attr1-value", 8, 14, true);
p.WriteAttributeValue("prefix2", 22, "attr2", 29, 5, false); p.WriteAttributeValue("prefix2", 22, "attr2", 29, 5, false);
@ -699,7 +699,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Arrange // Arrange
var page = CreatePage(p => var page = CreatePage(p =>
{ {
p.HtmlEncoder = new CommonTestEncoder(); p.HtmlEncoder = new HtmlTestEncoder();
p.BeginWriteAttribute("href", "prefix", 0, "suffix", 10, 1); p.BeginWriteAttribute("href", "prefix", 0, "suffix", 10, 1);
p.WriteAttributeValue("", 6, "true", 6, 4, false); p.WriteAttributeValue("", 6, "true", 6, 4, false);
p.EndWriteAttribute(); p.EndWriteAttribute();
@ -810,7 +810,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{ {
// Arrange // Arrange
var page = CreatePage(p => { }); var page = CreatePage(p => { });
page.HtmlEncoder = new CommonTestEncoder(); page.HtmlEncoder = new HtmlTestEncoder();
var executionContext = new TagHelperExecutionContext( var executionContext = new TagHelperExecutionContext(
"p", "p",
tagMode: TagMode.StartTagAndEndTag, tagMode: TagMode.StartTagAndEndTag,
@ -850,7 +850,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{ {
// Arrange // Arrange
var page = CreatePage(p => { }); var page = CreatePage(p => { });
page.HtmlEncoder = new CommonTestEncoder(); page.HtmlEncoder = new HtmlTestEncoder();
var executionContext = new TagHelperExecutionContext( var executionContext = new TagHelperExecutionContext(
"p", "p",
tagMode: TagMode.StartTagAndEndTag, tagMode: TagMode.StartTagAndEndTag,
@ -878,7 +878,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{ {
// Arrange // Arrange
var page = CreatePage(p => { }); var page = CreatePage(p => { });
page.HtmlEncoder = new CommonTestEncoder(); page.HtmlEncoder = new HtmlTestEncoder();
var executionContext = new TagHelperExecutionContext( var executionContext = new TagHelperExecutionContext(
"p", "p",
tagMode: TagMode.StartTagAndEndTag, tagMode: TagMode.StartTagAndEndTag,
@ -966,7 +966,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{ {
// Arrange // Arrange
var page = CreatePage(p => { }); var page = CreatePage(p => { });
page.HtmlEncoder = new CommonTestEncoder(); page.HtmlEncoder = new HtmlTestEncoder();
var writer = new StringWriter(); var writer = new StringWriter();
var prefix = "someattr="; var prefix = "someattr=";
var suffix = string.Empty; var suffix = string.Empty;
@ -994,7 +994,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task Write_WithHtmlString_WritesValueWithoutEncoding() public async Task Write_WithHtmlString_WritesValueWithoutEncoding()
{ {
// Arrange // Arrange
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var page = CreatePage(p => var page = CreatePage(p =>
{ {
@ -1630,7 +1630,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Act // Act
var page = CreatePage(p => var page = CreatePage(p =>
{ {
p.HtmlEncoder = new CommonTestEncoder(); p.HtmlEncoder = new HtmlTestEncoder();
p.WriteTagHelperAsync(tagHelperExecutionContext).Wait(); p.WriteTagHelperAsync(tagHelperExecutionContext).Wait();
}, context); }, context);
await page.ExecuteAsync(); await page.ExecuteAsync();
@ -1675,7 +1675,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Act // Act
var page = CreatePage(p => var page = CreatePage(p =>
{ {
p.HtmlEncoder = new CommonTestEncoder(); p.HtmlEncoder = new HtmlTestEncoder();
p.WriteTagHelperAsync(tagHelperExecutionContext).Wait(); p.WriteTagHelperAsync(tagHelperExecutionContext).Wait();
}, context); }, context);
await page.ExecuteAsync(); await page.ExecuteAsync();
@ -1707,7 +1707,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Act // Act
var page = CreatePage(p => var page = CreatePage(p =>
{ {
p.HtmlEncoder = new CommonTestEncoder(); p.HtmlEncoder = new HtmlTestEncoder();
p.WriteTagHelperToAsync(writer, tagHelperExecutionContext).Wait(); p.WriteTagHelperToAsync(writer, tagHelperExecutionContext).Wait();
}, context); }, context);
await page.ExecuteAsync(); await page.ExecuteAsync();
@ -1736,7 +1736,7 @@ namespace Microsoft.AspNet.Mvc.Razor
// Act // Act
var page = CreatePage(p => var page = CreatePage(p =>
{ {
p.HtmlEncoder = new CommonTestEncoder(); p.HtmlEncoder = new HtmlTestEncoder();
p.WriteTagHelperToAsync(writer, tagHelperExecutionContext).Wait(); p.WriteTagHelperToAsync(writer, tagHelperExecutionContext).Wait();
}, context); }, context);
await page.ExecuteAsync(); await page.ExecuteAsync();
@ -1828,7 +1828,7 @@ namespace Microsoft.AspNet.Mvc.Razor
{ {
public TestableRazorPage() public TestableRazorPage()
{ {
HtmlEncoder = new CommonTestEncoder(); HtmlEncoder = new HtmlTestEncoder();
} }
public string RenderedContent public string RenderedContent

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var expected = new[] { "True", "3", "18446744073709551615", "Hello world", "3.14", "2.718", "m" }; var expected = new[] { "True", "3", "18446744073709551615", "Hello world", "3.14", "2.718", "m" };
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
writer.Write(true); writer.Write(true);
@ -44,7 +44,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
// Arrange // Arrange
var expected = new[] { "True", "3", "18446744073709551615", "Hello world", "3.14", "2.718" }; var expected = new[] { "True", "3", "18446744073709551615", "Hello world", "3.14", "2.718" };
var unbufferedWriter = new Mock<TextWriter>(); var unbufferedWriter = new Mock<TextWriter>();
var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new HtmlTestEncoder());
var testClass = new TestClass(); var testClass = new TestClass();
// Act // Act
@ -70,7 +70,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var unbufferedWriter = new Mock<TextWriter> { CallBase = true }; var unbufferedWriter = new Mock<TextWriter> { CallBase = true };
var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new HtmlTestEncoder());
var buffer1 = new[] { 'a', 'b', 'c', 'd' }; var buffer1 = new[] { 'a', 'b', 'c', 'd' };
var buffer2 = new[] { 'd', 'e', 'f' }; var buffer2 = new[] { 'd', 'e', 'f' };
@ -98,7 +98,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var unbufferedWriter = new Mock<TextWriter>(); var unbufferedWriter = new Mock<TextWriter>();
var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
await writer.FlushAsync(); await writer.FlushAsync();
@ -122,7 +122,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
// Arrange // Arrange
var newLine = Environment.NewLine; var newLine = Environment.NewLine;
var expected = new List<object> { "False", newLine, "1.1", newLine, "3", newLine }; var expected = new List<object> { "False", newLine, "1.1", newLine, "3", newLine };
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
writer.WriteLine(false); writer.WriteLine(false);
@ -139,7 +139,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var unbufferedWriter = new Mock<TextWriter>(); var unbufferedWriter = new Mock<TextWriter>();
var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
writer.Flush(); writer.Flush();
@ -162,7 +162,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
var input1 = new ArraySegment<char>(new char[] { 'a', 'b', 'c', 'd' }, 1, 3); var input1 = new ArraySegment<char>(new char[] { 'a', 'b', 'c', 'd' }, 1, 3);
var input2 = new ArraySegment<char>(new char[] { 'e', 'f' }, 0, 2); var input2 = new ArraySegment<char>(new char[] { 'e', 'f' }, 0, 2);
var input3 = new ArraySegment<char>(new char[] { 'g', 'h', 'i', 'j' }, 3, 1); var input3 = new ArraySegment<char>(new char[] { 'g', 'h', 'i', 'j' }, 3, 1);
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
writer.Write(input1.Array, input1.Offset, input1.Count); writer.Write(input1.Array, input1.Offset, input1.Count);
@ -183,7 +183,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var newLine = Environment.NewLine; var newLine = Environment.NewLine;
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
writer.WriteLine(); writer.WriteLine();
@ -203,7 +203,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
var input2 = "from"; var input2 = "from";
var input3 = "ASP"; var input3 = "ASP";
var input4 = ".Net"; var input4 = ".Net";
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
writer.Write(input1); writer.Write(input1);
@ -220,7 +220,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public void Write_HtmlContent_AddsToEntries() public void Write_HtmlContent_AddsToEntries()
{ {
// Arrange // Arrange
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var content = new HtmlString("Hello, world!"); var content = new HtmlString("Hello, world!");
// Act // Act
@ -236,7 +236,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public void Write_Object_HtmlContent_AddsToEntries() public void Write_Object_HtmlContent_AddsToEntries()
{ {
// Arrange // Arrange
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var content = new HtmlString("Hello, world!"); var content = new HtmlString("Hello, world!");
// Act // Act
@ -252,7 +252,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public void WriteLine_Object_HtmlContent_AddsToEntries() public void WriteLine_Object_HtmlContent_AddsToEntries()
{ {
// Arrange // Arrange
var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var content = new HtmlString("Hello, world!"); var content = new HtmlString("Hello, world!");
// Act // Act
@ -271,7 +271,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
// Arrange // Arrange
var stringWriter = new StringWriter(); var stringWriter = new StringWriter();
var writer = new RazorTextWriter(stringWriter, Encoding.UTF8, new CommonTestEncoder()); var writer = new RazorTextWriter(stringWriter, Encoding.UTF8, new HtmlTestEncoder());
writer.Flush(); writer.Flush();
var content = new HtmlString("Hello, world!"); var content = new HtmlString("Hello, world!");
@ -287,8 +287,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public void Copy_CopiesContent_IfTargetTextWriterIsARazorTextWriterAndBuffering() public void Copy_CopiesContent_IfTargetTextWriterIsARazorTextWriterAndBuffering()
{ {
// Arrange // Arrange
var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var target = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var target = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
source.Write("Hello world"); source.Write("Hello world");
@ -307,8 +307,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var unbufferedWriter = new Mock<TextWriter>(); var unbufferedWriter = new Mock<TextWriter>();
var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var target = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new CommonTestEncoder()); var target = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
target.Flush(); target.Flush();
@ -328,7 +328,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public void Copy_WritesContent_IfTargetTextWriterIsNotARazorTextWriter() public void Copy_WritesContent_IfTargetTextWriterIsNotARazorTextWriter()
{ {
// Arrange // Arrange
var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var target = new StringWriter(); var target = new StringWriter();
var expected = "Hello world" + Environment.NewLine + "abc"; var expected = "Hello world" + Environment.NewLine + "abc";
@ -345,8 +345,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public async Task CopyAsync_WritesContent_IfTargetTextWriterIsARazorTextWriterAndBuffering() public async Task CopyAsync_WritesContent_IfTargetTextWriterIsARazorTextWriterAndBuffering()
{ {
// Arrange // Arrange
var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var target = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var target = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
source.WriteLine("Hello world"); source.WriteLine("Hello world");
@ -365,8 +365,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
{ {
// Arrange // Arrange
var unbufferedWriter = new Mock<TextWriter>(); var unbufferedWriter = new Mock<TextWriter>();
var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var target = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new CommonTestEncoder()); var target = new RazorTextWriter(unbufferedWriter.Object, Encoding.UTF8, new HtmlTestEncoder());
// Act // Act
await target.FlushAsync(); await target.FlushAsync();
@ -387,7 +387,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
public async Task CopyAsync_WritesContent_IfTargetTextWriterIsNotARazorTextWriter() public async Task CopyAsync_WritesContent_IfTargetTextWriterIsNotARazorTextWriter()
{ {
// Arrange // Arrange
var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new CommonTestEncoder()); var source = new RazorTextWriter(TextWriter.Null, Encoding.UTF8, new HtmlTestEncoder());
var target = new StringWriter(); var target = new StringWriter();
var expected = "Hello world" + Environment.NewLine; var expected = "Hello world" + Environment.NewLine;

View File

@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var factory = new RazorViewFactory( var factory = new RazorViewFactory(
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
Mock.Of<IViewStartProvider>(), Mock.Of<IViewStartProvider>(),
new CommonTestEncoder()); new HtmlTestEncoder());
var page = Mock.Of<IRazorPage>(); var page = Mock.Of<IRazorPage>();
var viewEngine = Mock.Of<IRazorViewEngine>(); var viewEngine = Mock.Of<IRazorViewEngine>();
@ -38,7 +38,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var factory = new RazorViewFactory( var factory = new RazorViewFactory(
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
Mock.Of<IViewStartProvider>(), Mock.Of<IViewStartProvider>(),
new CommonTestEncoder()); new HtmlTestEncoder());
var page = Mock.Of<IRazorPage>(); var page = Mock.Of<IRazorPage>();
var viewEngine = Mock.Of<IRazorViewEngine>(); var viewEngine = Mock.Of<IRazorViewEngine>();

View File

@ -36,14 +36,14 @@ namespace Microsoft.AspNet.Mvc.Razor
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
actual = v.Output; actual = v.Output;
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Write("Hello world"); v.Write("Hello world");
}); });
var view = new RazorView(Mock.Of<IRazorViewEngine>(), var view = new RazorView(Mock.Of<IRazorViewEngine>(),
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
var expected = viewContext.Writer; var expected = viewContext.Writer;
@ -72,7 +72,7 @@ namespace Microsoft.AspNet.Mvc.Razor
activator.Object, activator.Object,
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -136,7 +136,7 @@ namespace Microsoft.AspNet.Mvc.Razor
activator, activator,
CreateViewStartProvider(viewStart), CreateViewStartProvider(viewStart),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -161,7 +161,7 @@ namespace Microsoft.AspNet.Mvc.Razor
activator.Object, activator.Object,
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -176,7 +176,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_AsPartial_ExecutesLayout_ButNotViewStartPages() public async Task RenderAsync_AsPartial_ExecutesLayout_ButNotViewStartPages()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var expected = string.Join(Environment.NewLine, var expected = string.Join(Environment.NewLine,
"HtmlEncode[[layout-content", "HtmlEncode[[layout-content",
"]]HtmlEncode[[page-content]]"); "]]HtmlEncode[[page-content]]");
@ -206,7 +206,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
viewStartProvider, viewStartProvider,
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -232,7 +232,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
var original = viewContext.Writer; var original = viewContext.Writer;
@ -257,7 +257,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
var original = viewContext.Writer; var original = viewContext.Writer;
@ -284,7 +284,7 @@ namespace Microsoft.AspNet.Mvc.Razor
activator.Object, activator.Object,
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -327,7 +327,7 @@ namespace Microsoft.AspNet.Mvc.Razor
activator.Object, activator.Object,
CreateViewStartProvider(viewStart1, viewStart2), CreateViewStartProvider(viewStart1, viewStart2),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -360,7 +360,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
Mock.Of<IViewStartProvider>(), Mock.Of<IViewStartProvider>(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
viewEngine.Setup(v => v.FindPage(viewContext, layoutPath)) viewEngine.Setup(v => v.FindPage(viewContext, layoutPath))
@ -379,8 +379,8 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_ExecutesLayoutPages() public async Task RenderAsync_ExecutesLayoutPages()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var htmlEncodedNewLine = htmlEncoder.HtmlEncode(Environment.NewLine); var htmlEncodedNewLine = htmlEncoder.Encode(Environment.NewLine);
var expected = "HtmlEncode[[layout-content" + var expected = "HtmlEncode[[layout-content" +
Environment.NewLine + Environment.NewLine +
"]]head-content" + "]]head-content" +
@ -424,7 +424,7 @@ namespace Microsoft.AspNet.Mvc.Razor
activator.Object, activator.Object,
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
viewEngine.Setup(p => p.FindPage(viewContext, LayoutPath)) viewEngine.Setup(p => p.FindPage(viewContext, LayoutPath))
@ -466,7 +466,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -485,7 +485,7 @@ namespace Microsoft.AspNet.Mvc.Razor
"layout-section-content", "layout-section-content",
"page-section-content"); "page-section-content");
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = htmlEncoder; v.HtmlEncoder = htmlEncoder;
@ -529,7 +529,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -549,7 +549,7 @@ namespace Microsoft.AspNet.Mvc.Razor
"layout-section-content", "layout-section-content",
"page-section-content"); "page-section-content");
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = htmlEncoder; v.HtmlEncoder = htmlEncoder;
@ -589,7 +589,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -604,7 +604,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_WithNestedSections_ThrowsIfSectionsWereDefinedButNotRendered() public async Task RenderAsync_WithNestedSections_ThrowsIfSectionsWereDefinedButNotRendered()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = htmlEncoder; v.HtmlEncoder = htmlEncoder;
@ -649,7 +649,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -663,7 +663,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_WithNestedSectionsOfTheSameName_ThrowsIfSectionsWereDefinedButNotRendered() public async Task RenderAsync_WithNestedSectionsOfTheSameName_ThrowsIfSectionsWereDefinedButNotRendered()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = htmlEncoder; v.HtmlEncoder = htmlEncoder;
@ -714,7 +714,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -746,7 +746,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -759,7 +759,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_ExecutesNestedLayoutPages() public async Task RenderAsync_ExecutesNestedLayoutPages()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var expected = "HtmlEncode[[layout-2" + var expected = "HtmlEncode[[layout-2" +
Environment.NewLine + Environment.NewLine +
"]]bar-content" + "]]bar-content" +
@ -810,7 +810,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -846,7 +846,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -891,7 +891,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -906,7 +906,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_ExecutesNestedLayoutsWithNestedSections() public async Task RenderAsync_ExecutesNestedLayoutsWithNestedSections()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var expected = "HtmlEncode[[BaseLayout" + var expected = "HtmlEncode[[BaseLayout" +
Environment.NewLine + Environment.NewLine +
"]]HtmlEncode[[NestedLayout" + "]]HtmlEncode[[NestedLayout" +
@ -935,7 +935,7 @@ namespace Microsoft.AspNet.Mvc.Razor
v.RenderBodyPublic(); v.RenderBodyPublic();
v.DefineSection("foo", async writer => v.DefineSection("foo", async writer =>
{ {
await writer.WriteLineAsync(htmlEncoder.HtmlEncode(v.RenderSection("foo").ToString())); await writer.WriteLineAsync(htmlEncoder.Encode(v.RenderSection("foo").ToString()));
}); });
}); });
nestedLayout.Path = "~/Shared/Layout2.cshtml"; nestedLayout.Path = "~/Shared/Layout2.cshtml";
@ -959,7 +959,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -974,7 +974,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task RenderAsync_DoesNotCopyContentOnceRazorTextWriterIsNoLongerBuffering() public async Task RenderAsync_DoesNotCopyContentOnceRazorTextWriterIsNoLongerBuffering()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var expected = "HtmlEncode[[layout-1" + var expected = "HtmlEncode[[layout-1" +
Environment.NewLine + Environment.NewLine +
"]]body content" + "]]body content" +
@ -1012,7 +1012,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1027,7 +1027,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public async Task FlushAsync_DoesNotThrowWhenInvokedInsideOfASection() public async Task FlushAsync_DoesNotThrowWhenInvokedInsideOfASection()
{ {
// Arrange // Arrange
var htmlEncoder = new CommonTestEncoder(); var htmlEncoder = new HtmlTestEncoder();
var expected = "HtmlEncode[[layout-1" + var expected = "HtmlEncode[[layout-1" +
Environment.NewLine + Environment.NewLine +
"]]section-content-1" + "]]section-content-1" +
@ -1062,7 +1062,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1092,7 +1092,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1110,7 +1110,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.Path = "/Views/TestPath/Test.cshtml"; v.Path = "/Views/TestPath/Test.cshtml";
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.DefineSection("foo", async writer => v.DefineSection("foo", async writer =>
{ {
writer.WriteLine("foo-content"); writer.WriteLine("foo-content");
@ -1121,7 +1121,7 @@ namespace Microsoft.AspNet.Mvc.Razor
}); });
var layoutPage = new TestableRazorPage(v => var layoutPage = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Write("layout-1" + Environment.NewLine); v.Write("layout-1" + Environment.NewLine);
v.Write(v.RenderSection("foo")); v.Write(v.RenderSection("foo"));
v.DefineSection("bar", writer => writer.WriteLineAsync("bar-content")); v.DefineSection("bar", writer => writer.WriteLineAsync("bar-content"));
@ -1137,7 +1137,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1184,7 +1184,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
v.Layout = "Layout"; v.Layout = "Layout";
Assert.Same(pageWriter, v.Output); Assert.Same(pageWriter, v.Output);
Assert.Same(pageContext, v.PageExecutionContext); Assert.Same(pageContext, v.PageExecutionContext);
@ -1193,7 +1193,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var layout = new TestableRazorPage(v => var layout = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
Assert.Same(layoutWriter, v.Output); Assert.Same(layoutWriter, v.Output);
Assert.Same(layoutContext, v.PageExecutionContext); Assert.Same(layoutContext, v.PageExecutionContext);
v.RenderBodyPublic(); v.RenderBodyPublic();
@ -1213,7 +1213,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
viewStartProvider.Object, viewStartProvider.Object,
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
viewContext.HttpContext.Features.Set<IPageExecutionListenerFeature>(feature.Object); viewContext.HttpContext.Features.Set<IPageExecutionListenerFeature>(feature.Object);
@ -1246,7 +1246,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var page = new TestableRazorPage(v => var page = new TestableRazorPage(v =>
{ {
v.HtmlEncoder = new CommonTestEncoder(); v.HtmlEncoder = new HtmlTestEncoder();
Assert.IsType<RazorTextWriter>(v.Output); Assert.IsType<RazorTextWriter>(v.Output);
Assert.Same(pageContext, v.PageExecutionContext); Assert.Same(pageContext, v.PageExecutionContext);
executed = true; executed = true;
@ -1259,7 +1259,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
Mock.Of<IViewStartProvider>(), Mock.Of<IViewStartProvider>(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
viewContext.Writer = writer; viewContext.Writer = writer;
@ -1291,7 +1291,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
Mock.Of<IViewStartProvider>(), Mock.Of<IViewStartProvider>(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial); isPartial);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1331,7 +1331,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(viewStart1, viewStart2), CreateViewStartProvider(viewStart1, viewStart2),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1369,7 +1369,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(viewStart1, viewStart2), CreateViewStartProvider(viewStart1, viewStart2),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1411,7 +1411,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(viewStart), CreateViewStartProvider(viewStart),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: false); isPartial: false);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1437,7 +1437,7 @@ namespace Microsoft.AspNet.Mvc.Razor
Mock.Of<IRazorPageActivator>(), Mock.Of<IRazorPageActivator>(),
CreateViewStartProvider(), CreateViewStartProvider(),
page, page,
new CommonTestEncoder(), new HtmlTestEncoder(),
isPartial: true); isPartial: true);
var viewContext = CreateViewContext(view); var viewContext = CreateViewContext(view);
@ -1488,7 +1488,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public TestableRazorPage(Action<TestableRazorPage> executeAction) public TestableRazorPage(Action<TestableRazorPage> executeAction)
{ {
_executeAction = executeAction; _executeAction = executeAction;
HtmlEncoder = new CommonTestEncoder(); HtmlEncoder = new HtmlTestEncoder();
} }
public void RenderBodyPublic() public void RenderBodyPublic()

View File

@ -8,7 +8,7 @@ using System.Reflection;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders; using Microsoft.Extensions.WebEncoders.Testing;
using Moq; using Moq;
using Xunit; using Xunit;
@ -58,7 +58,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
urlHelperMock urlHelperMock
.Setup(urlHelper => urlHelper.Content(It.IsAny<string>())) .Setup(urlHelper => urlHelper.Content(It.IsAny<string>()))
.Returns(new Func<string, string>(value => "/approot" + value.Substring(1))); .Returns(new Func<string, string>(value => "/approot" + value.Substring(1)));
var tagHelper = new UrlResolutionTagHelper(urlHelperMock.Object, new TestHtmlEncoder()); var tagHelper = new UrlResolutionTagHelper(urlHelperMock.Object, new HtmlTestEncoder());
var context = new TagHelperContext( var context = new TagHelperContext(
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>( allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(

View File

@ -66,7 +66,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var expectedPostContent = "Something" + var expectedPostContent = "Something" +
HtmlContentUtilities.HtmlContentToString( HtmlContentUtilities.HtmlContentToString(
htmlGenerator.GenerateAntiforgery(viewContext), htmlGenerator.GenerateAntiforgery(viewContext),
new NullTestEncoder()); new HtmlTestEncoder());
var formTagHelper = new FormTagHelper(htmlGenerator) var formTagHelper = new FormTagHelper(htmlGenerator)
{ {
Action = "index", Action = "index",

View File

@ -67,7 +67,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var helper = new ImageTagHelper( var helper = new ImageTagHelper(
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
urlHelper.Object) urlHelper.Object)
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -118,7 +118,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment(); var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext(); var viewContext = MakeViewContext();
var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new CommonTestEncoder(), MakeUrlHelper()) var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new HtmlTestEncoder(), MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
Src = "testimage.png", Src = "testimage.png",
@ -159,7 +159,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment(); var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext(); var viewContext = MakeViewContext();
var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new CommonTestEncoder(), MakeUrlHelper()) var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new HtmlTestEncoder(), MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
Src = "/images/test-image.png", Src = "/images/test-image.png",
@ -195,7 +195,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment(); var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext(); var viewContext = MakeViewContext();
var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new CommonTestEncoder(), MakeUrlHelper()) var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new HtmlTestEncoder(), MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
Src = "/images/test-image.png", Src = "/images/test-image.png",
@ -231,7 +231,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment(); var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext("/bar"); var viewContext = MakeViewContext("/bar");
var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new CommonTestEncoder(), MakeUrlHelper()) var helper = new ImageTagHelper(hostingEnvironment, MakeCache(), new HtmlTestEncoder(), MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
Src = "/bar/images/image.jpg", Src = "/bar/images/image.jpg",

View File

@ -69,8 +69,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
urlHelper.Object) urlHelper.Object)
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -168,8 +168,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -288,8 +288,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -384,8 +384,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -431,8 +431,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -541,8 +541,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -573,8 +573,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -616,8 +616,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
GlobbingUrlBuilder = globbingUrlBuilder.Object, GlobbingUrlBuilder = globbingUrlBuilder.Object,
@ -661,8 +661,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
GlobbingUrlBuilder = globbingUrlBuilder.Object, GlobbingUrlBuilder = globbingUrlBuilder.Object,
@ -704,8 +704,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -744,8 +744,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -788,8 +788,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
GlobbingUrlBuilder = globbingUrlBuilder.Object, GlobbingUrlBuilder = globbingUrlBuilder.Object,

View File

@ -69,8 +69,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
urlHelper.Object) urlHelper.Object)
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -117,8 +117,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
CreateLogger(), CreateLogger(),
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -279,8 +279,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
CreateLogger(), CreateLogger(),
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -376,8 +376,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
CreateLogger(), CreateLogger(),
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -472,8 +472,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
CreateLogger(), CreateLogger(),
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -507,8 +507,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger, logger,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -551,8 +551,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
CreateLogger(), CreateLogger(),
MakeHostingEnvironment(), MakeHostingEnvironment(),
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -581,8 +581,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger, logger,
MakeHostingEnvironment(), MakeHostingEnvironment(),
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -633,8 +633,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger, logger,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -675,8 +675,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
GlobbingUrlBuilder = globbingUrlBuilder.Object, GlobbingUrlBuilder = globbingUrlBuilder.Object,
@ -716,8 +716,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
hostingEnvironment, hostingEnvironment,
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
GlobbingUrlBuilder = globbingUrlBuilder.Object, GlobbingUrlBuilder = globbingUrlBuilder.Object,
@ -755,8 +755,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
MakeHostingEnvironment(), MakeHostingEnvironment(),
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -792,8 +792,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
MakeHostingEnvironment(), MakeHostingEnvironment(),
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -831,8 +831,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
MakeHostingEnvironment(), MakeHostingEnvironment(),
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
ViewContext = viewContext, ViewContext = viewContext,
@ -849,7 +849,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
Assert.Equal("script", output.TagName); Assert.Equal("script", output.TagName);
Assert.Equal("/js/site.js?v=f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk", output.Attributes["src"].Value); Assert.Equal("/js/site.js?v=f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk", output.Attributes["src"].Value);
Assert.Equal(Environment.NewLine + "<script>(isavailable()||document.write(\"<script " + Assert.Equal(Environment.NewLine + "<script>(isavailable()||document.write(\"<script " +
"src=\\\"JavaScriptStringEncode[[fallback.js?v=f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk]]\\\">" + "src=\\\"JavaScriptEncode[[fallback.js?v=f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk]]\\\">" +
"<\\/script>\"));</script>", output.PostElement.GetContent()); "<\\/script>\"));</script>", output.PostElement.GetContent());
} }
@ -876,8 +876,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
logger.Object, logger.Object,
MakeHostingEnvironment(), MakeHostingEnvironment(),
MakeCache(), MakeCache(),
new CommonTestEncoder(), new HtmlTestEncoder(),
new CommonTestEncoder(), new JavaScriptTestEncoder(),
MakeUrlHelper()) MakeUrlHelper())
{ {
GlobbingUrlBuilder = globbingUrlBuilder.Object, GlobbingUrlBuilder = globbingUrlBuilder.Object,

View File

@ -43,7 +43,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
IOptions<MvcViewOptions> options, IOptions<MvcViewOptions> options,
IUrlHelper urlHelper, IUrlHelper urlHelper,
IDictionary<string, object> validationAttributes) IDictionary<string, object> validationAttributes)
: base(Mock.Of<IAntiforgery>(), options, metadataProvider, urlHelper, new CommonTestEncoder()) : base(Mock.Of<IAntiforgery>(), options, metadataProvider, urlHelper, new HtmlTestEncoder())
{ {
_validationAttributes = validationAttributes; _validationAttributes = validationAttributes;
} }

View File

@ -2,19 +2,19 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO; using System.IO;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
namespace Microsoft.AspNet.Mvc.TestCommon namespace Microsoft.AspNet.Mvc.TestCommon
{ {
public class HtmlContentUtilities public class HtmlContentUtilities
{ {
public static string HtmlContentToString(IHtmlContent content, IHtmlEncoder encoder = null) public static string HtmlContentToString(IHtmlContent content, HtmlEncoder encoder = null)
{ {
if (encoder == null) if (encoder == null)
{ {
encoder = new CommonTestEncoder(); encoder = new HtmlTestEncoder();
} }
using (var writer = new StringWriter()) using (var writer = new StringWriter())

View File

@ -1,27 +0,0 @@
// 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 System.IO;
namespace Microsoft.Extensions.WebEncoders
{
internal class TestHtmlEncoder : IHtmlEncoder
{
public string HtmlEncode(string value)
{
return $"HtmlEncode[[{ value }]]";
}
public void HtmlEncode(string value, int startIndex, int charCount, TextWriter output)
{
output.Write($"HtmlEncode[[{ value.Substring(startIndex, charCount) }]]");
}
public void HtmlEncode(char[] value, int startIndex, int charCount, TextWriter output)
{
output.Write("HtmlEncode[[");
output.Write(value, startIndex, charCount);
output.Write("]]");
}
}
}

View File

@ -1,27 +0,0 @@
// 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 System.IO;
namespace Microsoft.Extensions.WebEncoders
{
internal class TestJavaScriptEncoder : IJavaScriptStringEncoder
{
public string JavaScriptStringEncode(string value)
{
return $"JavaScriptEncode[[{ value }]]";
}
public void JavaScriptStringEncode(string value, int startIndex, int charCount, TextWriter output)
{
output.Write($"JavaScriptEncode[[{ value.Substring(startIndex, charCount) }]]");
}
public void JavaScriptStringEncode(char[] value, int startIndex, int charCount, TextWriter output)
{
output.Write("JavaScriptEncode[[");
output.Write(value, startIndex, charCount);
output.Write("]]");
}
}
}

View File

@ -1,27 +0,0 @@
// 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 System.IO;
namespace Microsoft.Extensions.WebEncoders
{
internal class TestUrlEncoder : IUrlEncoder
{
public string UrlEncode(string value)
{
return $"UrlEncode[[{ value }]]";
}
public void UrlEncode(string value, int startIndex, int charCount, TextWriter output)
{
output.Write($"UrlEncode[[{ value.Substring(startIndex, charCount) }]]");
}
public void UrlEncode(char[] value, int startIndex, int charCount, TextWriter output)
{
output.Write("UrlEncode[[");
output.Write(value, startIndex, charCount);
output.Write("]]");
}
}
}

View File

@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Antiforgery; using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Http.Internal; using Microsoft.AspNet.Http.Internal;
@ -17,7 +18,6 @@ using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
using Moq; using Moq;
@ -254,7 +254,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
optionsAccessor.Object, optionsAccessor.Object,
provider, provider,
urlHelper, urlHelper,
new CommonTestEncoder()); new HtmlTestEncoder());
} }
// TemplateRenderer will Contextualize this transient service. // TemplateRenderer will Contextualize this transient service.
@ -262,9 +262,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
htmlGenerator, htmlGenerator,
viewEngine, viewEngine,
provider, provider,
new CommonTestEncoder(), new HtmlTestEncoder(),
new UrlEncoder(), UrlEncoder.Default,
new JavaScriptStringEncoder()); JavaScriptEncoder.Default);
if (innerHelperWrapper != null) if (innerHelperWrapper != null)
{ {
@ -278,9 +278,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
htmlGenerator, htmlGenerator,
viewEngine, viewEngine,
provider, provider,
new CommonTestEncoder(), new HtmlTestEncoder(),
new UrlEncoder(), UrlEncoder.Default,
new JavaScriptStringEncoder()); JavaScriptEncoder.Default);
var viewContext = new ViewContext( var viewContext = new ViewContext(
actionContext, actionContext,

View File

@ -149,7 +149,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
Assert.Equal(expected, HtmlContentUtilities.HtmlContentToString(html)); Assert.Equal(expected, HtmlContentUtilities.HtmlContentToString(html));
var writer = new StringWriter(); var writer = new StringWriter();
var hiddenTag = Assert.Single(helper.ViewContext.FormContext.EndOfFormContent); var hiddenTag = Assert.Single(helper.ViewContext.FormContext.EndOfFormContent);
hiddenTag.WriteTo(writer, new CommonTestEncoder()); hiddenTag.WriteTo(writer, new HtmlTestEncoder());
Assert.Equal("<input name=\"HtmlEncode[[Property1]]\" type=\"HtmlEncode[[hidden]]\" value=\"HtmlEncode[[false]]\" />", Assert.Equal("<input name=\"HtmlEncode[[Property1]]\" type=\"HtmlEncode[[hidden]]\" value=\"HtmlEncode[[false]]\" />",
writer.ToString()); writer.ToString());
} }

View File

@ -6,10 +6,10 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Routing; using Microsoft.AspNet.Mvc.Routing;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
using Moq; using Moq;
using Xunit; using Xunit;
@ -327,7 +327,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
// Arrange // Arrange
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(); var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper();
var serviceProvider = new Mock<IServiceProvider>(); var serviceProvider = new Mock<IServiceProvider>();
serviceProvider.Setup(s => s.GetService(typeof(IHtmlEncoder))).Returns(new CommonTestEncoder()); serviceProvider.Setup(s => s.GetService(typeof(HtmlEncoder))).Returns(new HtmlTestEncoder());
var viewContext = htmlHelper.ViewContext; var viewContext = htmlHelper.ViewContext;
viewContext.HttpContext.RequestServices = serviceProvider.Object; viewContext.HttpContext.RequestServices = serviceProvider.Object;

View File

@ -6,12 +6,12 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.TestCommon; using Microsoft.AspNet.Mvc.TestCommon;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Testing; using Microsoft.AspNet.Testing;
using Microsoft.Extensions.WebEncoders;
using Moq; using Moq;
using Xunit; using Xunit;
@ -1568,9 +1568,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
new Mock<IHtmlGenerator>(MockBehavior.Strict).Object, new Mock<IHtmlGenerator>(MockBehavior.Strict).Object,
new Mock<ICompositeViewEngine>(MockBehavior.Strict).Object, new Mock<ICompositeViewEngine>(MockBehavior.Strict).Object,
metadataProvider, metadataProvider,
new Mock<IHtmlEncoder>(MockBehavior.Strict).Object, new Mock<HtmlEncoder>(MockBehavior.Strict).Object,
new Mock<IUrlEncoder>(MockBehavior.Strict).Object, new Mock<UrlEncoder>(MockBehavior.Strict).Object,
new Mock<IJavaScriptStringEncoder>(MockBehavior.Strict).Object) new Mock<JavaScriptEncoder>(MockBehavior.Strict).Object)
{ {
} }

View File

@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
var writer = new StringWriter(); var writer = new StringWriter();
// Act // Act
content.WriteTo(writer, new CommonTestEncoder()); content.WriteTo(writer, new HtmlTestEncoder());
// Assert // Assert
Assert.Equal(expectedText, writer.ToString()); Assert.Equal(expectedText, writer.ToString());

View File

@ -3,7 +3,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.Extensions.WebEncoders.Testing; using Microsoft.Extensions.WebEncoders.Testing;
using Xunit; using Xunit;
@ -85,7 +84,7 @@ namespace Microsoft.AspNet.Mvc.Core.Rendering
// Act // Act
using (var writer = new StringWriter()) using (var writer = new StringWriter())
{ {
tagBuilder.WriteTo(writer, new NullTestEncoder()); tagBuilder.WriteTo(writer, new HtmlTestEncoder());
// Assert // Assert
Assert.Equal(expectedOutput, writer.ToString()); Assert.Equal(expectedOutput, writer.ToString());
@ -116,7 +115,7 @@ namespace Microsoft.AspNet.Mvc.Core.Rendering
// Act // Act
using (var writer = new StringWriter()) using (var writer = new StringWriter())
{ {
tagBuilder.WriteTo(writer, new CommonTestEncoder()); tagBuilder.WriteTo(writer, new HtmlTestEncoder());
// Assert // Assert
Assert.Equal("<p><span>Hello</span>HtmlEncode[[, World!]]</p>", writer.ToString()); Assert.Equal("<p><span>Hello</span>HtmlEncode[[, World!]]</p>", writer.ToString());

View File

@ -1,10 +1,10 @@
// Copyright (c) .NET Foundation. All rights reserved. // 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. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewComponents; using Microsoft.AspNet.Mvc.ViewComponents;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
@ -49,7 +49,7 @@ namespace Microsoft.AspNet.Mvc
// Arrange // Arrange
var viewComponent = new TestViewComponent(); var viewComponent = new TestViewComponent();
var expectedContent = "TestContent&"; var expectedContent = "TestContent&";
var expectedEncodedContent = new HtmlString(new HtmlEncoder().HtmlEncode(expectedContent)); var expectedEncodedContent = new HtmlString(HtmlEncoder.Default.Encode(expectedContent));
// Act // Act
var actualResult = viewComponent.Content(expectedContent); var actualResult = viewComponent.Content(expectedContent);

View File

@ -8,6 +8,7 @@ using System.ComponentModel.DataAnnotations;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions; using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
@ -18,7 +19,6 @@ using Microsoft.AspNet.Mvc.TestCommon;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.AspNet.Testing; using Microsoft.AspNet.Testing;
using Microsoft.Extensions.WebEncoders;
using Moq; using Moq;
using Xunit; using Xunit;
@ -919,14 +919,14 @@ Environment.NewLine;
get { return _innerHelper.TempData; } get { return _innerHelper.TempData; }
} }
public IUrlEncoder UrlEncoder public UrlEncoder UrlEncoder
{ {
get { return _innerHelper.UrlEncoder; } get { return _innerHelper.UrlEncoder; }
} }
public IJavaScriptStringEncoder JavaScriptStringEncoder public JavaScriptEncoder JavaScriptEncoder
{ {
get { return _innerHelper.JavaScriptStringEncoder; } get { return _innerHelper.JavaScriptEncoder; }
} }
public void Contextualize(ViewContext viewContext) public void Contextualize(ViewContext viewContext)

View File

@ -6,6 +6,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Antiforgery; using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Http.Internal; using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Mvc.Abstractions; using Microsoft.AspNet.Mvc.Abstractions;
@ -14,7 +15,6 @@ using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines; using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.WebEncoders;
using Moq; using Moq;
using Xunit; using Xunit;
@ -645,7 +645,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
{ {
var mvcViewOptionsAccessor = new Mock<IOptions<MvcViewOptions>>(); var mvcViewOptionsAccessor = new Mock<IOptions<MvcViewOptions>>();
mvcViewOptionsAccessor.SetupGet(accessor => accessor.Value).Returns(new MvcViewOptions()); mvcViewOptionsAccessor.SetupGet(accessor => accessor.Value).Returns(new MvcViewOptions());
var htmlEncoder = Mock.Of<IHtmlEncoder>(); var htmlEncoder = Mock.Of<HtmlEncoder>();
var antiforgery = Mock.Of<IAntiforgery>(); var antiforgery = Mock.Of<IAntiforgery>();
var optionsAccessor = new Mock<IOptions<MvcOptions>>(); var optionsAccessor = new Mock<IOptions<MvcOptions>>();

View File

@ -175,7 +175,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
// Act // Act
source.Write("Hello world"); source.Write("Hello world");
source.Write(new char[1], 0, 1); source.Write(new char[1], 0, 1);
source.CopyTo(target, new CommonTestEncoder()); source.CopyTo(target, new HtmlTestEncoder());
// Assert // Assert
// Make sure content was written to the source. // Make sure content was written to the source.
@ -197,7 +197,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
// Act // Act
source.WriteLine("Hello world"); source.WriteLine("Hello world");
source.Write(new[] { 'x', 'a', 'b', 'c' }, 1, 3); source.Write(new[] { 'x', 'a', 'b', 'c' }, 1, 3);
source.CopyTo(target, new CommonTestEncoder()); source.CopyTo(target, new HtmlTestEncoder());
// Assert // Assert
Assert.Equal(expected, target.ToString()); Assert.Equal(expected, target.ToString());

View File

@ -18,7 +18,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
// Assert // Assert
using (var writer = new StringWriter()) using (var writer = new StringWriter())
{ {
content.WriteTo(writer, new CommonTestEncoder()); content.WriteTo(writer, new HtmlTestEncoder());
Assert.Equal("HtmlEncode[[Hello World]]", writer.ToString()); Assert.Equal("HtmlEncode[[Hello World]]", writer.ToString());
} }
} }

View File

@ -1,19 +1,19 @@
// Copyright (c) .NET Foundation. All rights reserved. // 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. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Text.Encodings.Web;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.AspNet.Razor.TagHelpers; using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
namespace ActivatorWebSite.TagHelpers namespace ActivatorWebSite.TagHelpers
{ {
[HtmlTargetElement("span")] [HtmlTargetElement("span")]
public class HiddenTagHelper : TagHelper public class HiddenTagHelper : TagHelper
{ {
public HiddenTagHelper(IHtmlHelper htmlHelper, IHtmlEncoder htmlEncoder) public HiddenTagHelper(IHtmlHelper htmlHelper, HtmlEncoder htmlEncoder)
{ {
HtmlHelper = htmlHelper; HtmlHelper = htmlHelper;
HtmlEncoder = htmlEncoder; HtmlEncoder = htmlEncoder;
@ -21,7 +21,7 @@ namespace ActivatorWebSite.TagHelpers
public IHtmlHelper HtmlHelper { get; } public IHtmlHelper HtmlHelper { get; }
public IHtmlEncoder HtmlEncoder { get; } public HtmlEncoder HtmlEncoder { get; }
[HtmlAttributeNotBound] [HtmlAttributeNotBound]
[ViewContext] [ViewContext]

View File

@ -1,9 +1,9 @@
// Copyright (c) .NET Foundation. All rights reserved. // 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. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Text.Encodings.Web;
using Microsoft.AspNet.Authentication; using Microsoft.AspNet.Authentication;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace FiltersWebSite namespace FiltersWebSite
@ -13,7 +13,7 @@ namespace FiltersWebSite
public AuthorizeBasicMiddleware( public AuthorizeBasicMiddleware(
RequestDelegate next, RequestDelegate next,
ILoggerFactory loggerFactory, ILoggerFactory loggerFactory,
IUrlEncoder encoder, UrlEncoder encoder,
string authScheme) : string authScheme) :
base(next, base(next,
new BasicOptions { AuthenticationScheme = authScheme }, new BasicOptions { AuthenticationScheme = authScheme },