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.Globalization;
using System.Text;
using System.Text.Encodings.Web;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Localization
{
@ -18,14 +17,14 @@ namespace Microsoft.AspNet.Mvc.Localization
public class HtmlLocalizer : IHtmlLocalizer
{
private IStringLocalizer _localizer;
private readonly IHtmlEncoder _encoder;
private readonly HtmlEncoder _encoder;
/// <summary>
/// Creates a new <see cref="HtmlLocalizer"/>.
/// </summary>
/// <param name="localizer">The <see cref="IStringLocalizer"/> to read strings from.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/>.</param>
public HtmlLocalizer(IStringLocalizer localizer, IHtmlEncoder encoder)
/// <param name="encoder">The <see cref="HtmlEncoder"/>.</param>
public HtmlLocalizer(IStringLocalizer localizer, HtmlEncoder encoder)
{
if (localizer == null)
{
@ -266,7 +265,7 @@ namespace Microsoft.AspNet.Mvc.Localization
{
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.
using System;
using System.Text.Encodings.Web;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Localization
{
@ -13,14 +13,14 @@ namespace Microsoft.AspNet.Mvc.Localization
public class HtmlLocalizerFactory : IHtmlLocalizerFactory
{
private readonly IStringLocalizerFactory _factory;
private readonly IHtmlEncoder _encoder;
private readonly HtmlEncoder _encoder;
/// <summary>
/// Creates a new <see cref="HtmlLocalizer"/>.
/// </summary>
/// <param name="localizerFactory">The <see cref="IStringLocalizerFactory"/>.</param>
/// <param name="encoder">The <see cref="IHtmlEncoder"/>.</param>
public HtmlLocalizerFactory(IStringLocalizerFactory localizerFactory, IHtmlEncoder encoder)
/// <param name="encoder">The <see cref="HtmlEncoder"/>.</param>
public HtmlLocalizerFactory(IStringLocalizerFactory localizerFactory, HtmlEncoder encoder)
{
if (localizerFactory == null)
{

View File

@ -3,6 +3,7 @@
using System;
using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Razor;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
@ -27,9 +28,9 @@ namespace Microsoft.AspNet.Mvc.Localization.Internal
services.TryAdd(ServiceDescriptor.Singleton<IHtmlLocalizerFactory, HtmlLocalizerFactory>());
services.TryAdd(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(HtmlLocalizer<>)));
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);

View File

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

View File

@ -8,6 +8,7 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Security.Claims;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Html.Abstractions;
@ -20,7 +21,6 @@ using Microsoft.AspNet.PageExecutionInstrumentation;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor
{
@ -76,10 +76,10 @@ namespace Microsoft.AspNet.Mvc.Razor
public bool IsPartial { get; set; }
/// <summary>
/// Gets the <see cref="IHtmlEncoder"/> to be used for encoding HTML.
/// Gets the <see cref="HtmlEncoder"/> to be used for encoding HTML.
/// </summary>
[RazorInject]
public IHtmlEncoder HtmlEncoder { get; set; }
public HtmlEncoder HtmlEncoder { get; set; }
/// <inheritdoc />
public IPageExecutionContext PageExecutionContext { get; set; }
@ -423,7 +423,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// <param name="value">The <see cref="object"/> to write.</param>
/// <remarks>
/// <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
/// <paramref name="writer"/>.
/// </remarks>
@ -441,7 +441,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="writer"/>.
/// </summary>
/// <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="escapeQuotes">
/// 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>
/// <remarks>
/// <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
/// <paramref name="writer"/>.
/// </remarks>
public static void WriteTo(
TextWriter writer,
IHtmlEncoder encoder,
HtmlEncoder encoder,
object value,
bool escapeQuotes)
{
@ -532,11 +532,11 @@ namespace Microsoft.AspNet.Mvc.Razor
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))
{
encoder.HtmlEncode(value, writer);
encoder.Encode(writer, value);
}
}

View File

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

View File

@ -5,25 +5,25 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.PageExecutionInstrumentation;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor
{
/// <summary>
/// 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>
public class RazorView : IView
{
private readonly IRazorViewEngine _viewEngine;
private readonly IRazorPageActivator _pageActivator;
private readonly IViewStartProvider _viewStartProvider;
private readonly IHtmlEncoder _htmlEncoder;
private readonly HtmlEncoder _htmlEncoder;
private IPageExecutionListenerFeature _pageExecutionFeature;
/// <summary>
@ -41,7 +41,7 @@ namespace Microsoft.AspNet.Mvc.Razor
IRazorPageActivator pageActivator,
IViewStartProvider viewStartProvider,
IRazorPage razorPage,
IHtmlEncoder htmlEncoder,
HtmlEncoder htmlEncoder,
bool isPartial)
{
_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.
using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor
{
@ -13,7 +13,7 @@ namespace Microsoft.AspNet.Mvc.Razor
/// </summary>
public class RazorViewFactory : IRazorViewFactory
{
private readonly IHtmlEncoder _htmlEncoder;
private readonly HtmlEncoder _htmlEncoder;
private readonly IRazorPageActivator _pageActivator;
private readonly IViewStartProvider _viewStartProvider;
@ -26,7 +26,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public RazorViewFactory(
IRazorPageActivator pageActivator,
IViewStartProvider viewStartProvider,
IHtmlEncoder htmlEncoder)
HtmlEncoder htmlEncoder)
{
_pageActivator = pageActivator;
_viewStartProvider = viewStartProvider;

View File

@ -5,9 +5,9 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
{
@ -84,8 +84,8 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
/// Creates a new <see cref="UrlResolutionTagHelper"/>.
/// </summary>
/// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
/// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
public UrlResolutionTagHelper(IUrlHelper urlHelper, IHtmlEncoder htmlEncoder)
/// <param name="htmlEncoder">The <see cref="HtmlEncoder"/>.</param>
public UrlResolutionTagHelper(IUrlHelper urlHelper, HtmlEncoder htmlEncoder)
{
UrlHelper = urlHelper;
HtmlEncoder = htmlEncoder;
@ -102,7 +102,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
protected IUrlHelper UrlHelper { get; }
protected IHtmlEncoder HtmlEncoder { get; }
protected HtmlEncoder HtmlEncoder { get; }
/// <inheritdoc />
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 encodedApplicationPath = HtmlEncoder.HtmlEncode(applicationPath);
var encodedApplicationPath = HtmlEncoder.Encode(applicationPath);
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.
using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Mvc.Razor.TagHelpers;
using Microsoft.AspNet.Mvc.Rendering;
@ -9,7 +10,6 @@ using Microsoft.AspNet.Mvc.TagHelpers.Internal;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.TagHelpers
{
@ -41,7 +41,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public ImageTagHelper(
IHostingEnvironment hostingEnvironment,
IMemoryCache cache,
IHtmlEncoder htmlEncoder,
HtmlEncoder htmlEncoder,
IUrlHelper urlHelper)
: base(urlHelper, htmlEncoder)
{

View File

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

View File

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

View File

@ -4,6 +4,7 @@
using System;
using System.Diagnostics;
using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Mvc.Razor.TagHelpers;
using Microsoft.AspNet.Mvc.Rendering;
@ -12,7 +13,6 @@ using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.WebEncoders;
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="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
/// <param name="cache">The <see cref="IMemoryCache"/>.</param>
/// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
/// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param>
/// <param name="htmlEncoder">The <see cref="HtmlEncoder"/>.</param>
/// <param name="javaScriptEncoder">The <see cref="JavaScriptEncoder"/>.</param>
/// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
public ScriptTagHelper(
ILogger<ScriptTagHelper> logger,
IHostingEnvironment hostingEnvironment,
IMemoryCache cache,
IHtmlEncoder htmlEncoder,
IJavaScriptStringEncoder javaScriptEncoder,
HtmlEncoder htmlEncoder,
JavaScriptEncoder javaScriptEncoder,
IUrlHelper urlHelper)
: base(urlHelper, htmlEncoder)
{
@ -176,7 +176,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
protected IMemoryCache Cache { get; }
protected IJavaScriptStringEncoder JavaScriptEncoder { get; }
protected JavaScriptEncoder JavaScriptEncoder { get; }
// Internal for ease of use when testing.
protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; }
@ -316,9 +316,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
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 encodedValue = JavaScriptEncoder.JavaScriptStringEncode(attributeValue);
var encodedValue = JavaScriptEncoder.Encode(attributeValue);
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.
var encodedValue = JavaScriptEncoder.JavaScriptStringEncode(attributeValue);
var encodedValue = JavaScriptEncoder.Encode(attributeValue);
AppendAttribute(builder, attribute.Name, encodedValue, escapeQuotes: true);
}

View File

@ -3,9 +3,9 @@
using System;
using System.Text;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Razor;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
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"/>.
/// </summary>
/// <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="value">The <see cref="object"/> to write.</param>
/// <returns><paramref name="content"/> after the write operation has completed.</returns>
/// <remarks>
/// <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"/>
/// is written to the <paramref name="content"/>.
/// </remarks>
public static TagHelperContent Append(
this TagHelperContent content,
IHtmlEncoder encoder,
HtmlEncoder encoder,
Encoding encoding,
object value)
{

View File

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

View File

@ -3,12 +3,12 @@
using System;
using System.Collections.Generic;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.ModelBinding.Validation;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.Rendering
{
@ -55,14 +55,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
ITempDataDictionary TempData { get; }
/// <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>
IUrlEncoder UrlEncoder { get; }
UrlEncoder UrlEncoder { get; }
/// <summary>
/// Gets the <see cref="IJavaScriptStringEncoder"/> to be used for encoding JavaScript.
/// Gets the <see cref="JavaScriptEncoder"/> to be used for encoding JavaScript.
/// </summary>
IJavaScriptStringEncoder JavaScriptStringEncoder { get; }
JavaScriptEncoder JavaScriptEncoder { get; }
/// <summary>
/// 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.
using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.AspNet.Mvc.Rendering
@ -61,10 +61,10 @@ namespace Microsoft.AspNet.Mvc.Rendering
var writer = _viewContext.Writer;
var htmlWriter = writer as HtmlTextWriter;
IHtmlEncoder htmlEncoder = null;
HtmlEncoder htmlEncoder = null;
if (htmlWriter == null)
{
htmlEncoder = _viewContext.HttpContext.RequestServices.GetRequiredService<IHtmlEncoder>();
htmlEncoder = _viewContext.HttpContext.RequestServices.GetRequiredService<HtmlEncoder>();
}
foreach (var content in formContext.EndOfFormContent)

View File

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

View File

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

View File

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

View File

@ -4,11 +4,11 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions;
using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Mvc.ViewFeatures
{
@ -21,10 +21,10 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
IHtmlGenerator htmlGenerator,
ICompositeViewEngine viewEngine,
IModelMetadataProvider metadataProvider,
IHtmlEncoder htmlEncoder,
IUrlEncoder urlEncoder,
IJavaScriptStringEncoder javaScriptStringEncoder)
: base(htmlGenerator, viewEngine, metadataProvider, htmlEncoder, urlEncoder, javaScriptStringEncoder)
HtmlEncoder htmlEncoder,
UrlEncoder urlEncoder,
JavaScriptEncoder javaScriptEncoder)
: base(htmlGenerator, viewEngine, metadataProvider, htmlEncoder, urlEncoder, javaScriptEncoder)
{
if (htmlGenerator == null)
{
@ -46,9 +46,9 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
{
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.IO;
using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
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.
/// </summary>
/// <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>
public void CopyTo(TextWriter writer, IHtmlEncoder encoder)
/// <param name="encoder">The <see cref="HtmlEncoder"/> to encode the copied/written content.</param>
public void CopyTo(TextWriter writer, HtmlEncoder encoder)
{
var targetStringCollectionWriter = writer as StringCollectionTextWriter;
if (targetStringCollectionWriter != null)
@ -199,8 +199,8 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
/// are copied. It is just written to the <paramref name="writer"/> otherwise.
/// </summary>
/// <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>
public Task CopyToAsync(TextWriter writer, IHtmlEncoder encoder)
/// <param name="encoder">The <see cref="HtmlEncoder"/> to encode the copied/written content.</param>
public Task CopyToAsync(TextWriter writer, HtmlEncoder encoder)
{
CopyTo(writer, encoder);
return _completedTask;
@ -226,7 +226,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
_entries.Add(content);
}
public void WriteTo(TextWriter writer, IHtmlEncoder encoder)
public void WriteTo(TextWriter writer, HtmlEncoder encoder)
{
foreach (var item in _entries)
{

View File

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

View File

@ -1,8 +1,8 @@
// 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.Text.Encodings.Web;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing;
namespace Microsoft.AspNet.Mvc.FunctionalTests
@ -12,9 +12,9 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
{
protected override void AddAdditionalServices(IServiceCollection services)
{
services.AddTransient<IHtmlEncoder, CommonTestEncoder>();
services.AddTransient<IJavaScriptStringEncoder, CommonTestEncoder>();
services.AddTransient<IUrlEncoder, CommonTestEncoder>();
services.AddTransient<HtmlEncoder, HtmlTestEncoder>();
services.AddTransient<JavaScriptEncoder, JavaScriptTestEncoder>();
services.AddTransient<UrlEncoder, UrlTestEncoder>();
}
}
}

View File

@ -39,63 +39,63 @@
<!-- 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" />
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<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 -->
<link href="HtmlEncode[[/styles/site.min.css]]" rel="stylesheet" data-extra="test" />
@ -120,7 +120,7 @@
<!-- Fallback with file version -->
<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 -->
<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>">
// TagHelper script with comment in body, and extra properties.
</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">
// Fallback to globbed src
</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]]">
// Fallback to globbed src with exclude
</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]]">
// Fallback to globbed and static src
</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]]">
// Fallback to globbed and static src should de-dupe
</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]]">
// Fallback to globbed src with missing include
@ -42,7 +42,7 @@
<script src="HtmlEncode[[/blank.js]]">
// Fallback to static and globbed src with missing include
</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]]">
// Fallback to globbed src outside of webroot
@ -55,7 +55,7 @@
<script data-foo="foo-data3">
// Valid TagHelper (although no src is provided) script with comment in body, and extra properties.
</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]]">
// Invalid TagHelper script with comment in body.
@ -98,12 +98,12 @@
<script src="HtmlEncode[[/blank.js]]">
// TagHelper script with comment in body, and file version.
</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]]">
// Fallback to globbed src with file version.
</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]]">
// 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>();
stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder());
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act
var actualLocalizedString = htmlLocalizer["Hello"];
@ -39,7 +39,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>();
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
var actualLocalizedString = htmlLocalizer["Hello", "test"];
@ -102,7 +102,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>();
stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder());
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act
var localizedHtmlString = htmlLocalizer.Html("Hello", arguments);
@ -141,7 +141,7 @@ namespace Microsoft.AspNet.Mvc.Localization.Test
var stringLocalizer = new Mock<IStringLocalizer>();
stringLocalizer.Setup(s => s["Hello"]).Returns(localizedString);
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new CommonTestEncoder());
var htmlLocalizer = new HtmlLocalizer(stringLocalizer.Object, new HtmlTestEncoder());
// Act
var exception = Assert.Throws<FormatException>(() => htmlLocalizer.Html("Hello", new object[] { }));

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,7 +8,7 @@ using System.Reflection;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing;
using Moq;
using Xunit;
@ -58,7 +58,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
urlHelperMock
.Setup(urlHelper => urlHelper.Content(It.IsAny<string>()))
.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(
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(

View File

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

View File

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

View File

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

View File

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

View File

@ -43,7 +43,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
IOptions<MvcViewOptions> options,
IUrlHelper urlHelper,
IDictionary<string, object> validationAttributes)
: base(Mock.Of<IAntiforgery>(), options, metadataProvider, urlHelper, new CommonTestEncoder())
: base(Mock.Of<IAntiforgery>(), options, metadataProvider, urlHelper, new HtmlTestEncoder())
{
_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.
using System.IO;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Html.Abstractions;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing;
namespace Microsoft.AspNet.Mvc.TestCommon
{
public class HtmlContentUtilities
{
public static string HtmlContentToString(IHtmlContent content, IHtmlEncoder encoder = null)
public static string HtmlContentToString(IHtmlContent content, HtmlEncoder encoder = null)
{
if (encoder == null)
{
encoder = new CommonTestEncoder();
encoder = new HtmlTestEncoder();
}
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.Globalization;
using System.IO;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Http.Internal;
@ -17,7 +18,6 @@ using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Routing;
using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing;
using Moq;
@ -254,7 +254,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
optionsAccessor.Object,
provider,
urlHelper,
new CommonTestEncoder());
new HtmlTestEncoder());
}
// TemplateRenderer will Contextualize this transient service.
@ -262,9 +262,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
htmlGenerator,
viewEngine,
provider,
new CommonTestEncoder(),
new UrlEncoder(),
new JavaScriptStringEncoder());
new HtmlTestEncoder(),
UrlEncoder.Default,
JavaScriptEncoder.Default);
if (innerHelperWrapper != null)
{
@ -278,9 +278,9 @@ namespace Microsoft.AspNet.Mvc.Rendering
htmlGenerator,
viewEngine,
provider,
new CommonTestEncoder(),
new UrlEncoder(),
new JavaScriptStringEncoder());
new HtmlTestEncoder(),
UrlEncoder.Default,
JavaScriptEncoder.Default);
var viewContext = new ViewContext(
actionContext,

View File

@ -149,7 +149,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
Assert.Equal(expected, HtmlContentUtilities.HtmlContentToString(html));
var writer = new StringWriter();
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]]\" />",
writer.ToString());
}

View File

@ -6,10 +6,10 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Routing;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
using Microsoft.Extensions.WebEncoders.Testing;
using Moq;
using Xunit;
@ -327,7 +327,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
// Arrange
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper();
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;
viewContext.HttpContext.RequestServices = serviceProvider.Object;

View File

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

View File

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

View File

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

View File

@ -1,10 +1,10 @@
// 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.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewComponents;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.Extensions.WebEncoders;
using Xunit;
namespace Microsoft.AspNet.Mvc
@ -49,7 +49,7 @@ namespace Microsoft.AspNet.Mvc
// Arrange
var viewComponent = new TestViewComponent();
var expectedContent = "TestContent&";
var expectedEncodedContent = new HtmlString(new HtmlEncoder().HtmlEncode(expectedContent));
var expectedEncodedContent = new HtmlString(HtmlEncoder.Default.Encode(expectedContent));
// Act
var actualResult = viewComponent.Content(expectedContent);

View File

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

View File

@ -6,6 +6,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Antiforgery;
using Microsoft.AspNet.Http.Internal;
using Microsoft.AspNet.Mvc.Abstractions;
@ -14,7 +15,6 @@ using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewEngines;
using Microsoft.AspNet.Routing;
using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.WebEncoders;
using Moq;
using Xunit;
@ -645,7 +645,7 @@ namespace Microsoft.AspNet.Mvc.ViewFeatures
{
var mvcViewOptionsAccessor = new Mock<IOptions<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 optionsAccessor = new Mock<IOptions<MvcOptions>>();

View File

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

View File

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

View File

@ -1,19 +1,19 @@
// 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.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Extensions.WebEncoders;
namespace ActivatorWebSite.TagHelpers
{
[HtmlTargetElement("span")]
public class HiddenTagHelper : TagHelper
{
public HiddenTagHelper(IHtmlHelper htmlHelper, IHtmlEncoder htmlEncoder)
public HiddenTagHelper(IHtmlHelper htmlHelper, HtmlEncoder htmlEncoder)
{
HtmlHelper = htmlHelper;
HtmlEncoder = htmlEncoder;
@ -21,7 +21,7 @@ namespace ActivatorWebSite.TagHelpers
public IHtmlHelper HtmlHelper { get; }
public IHtmlEncoder HtmlEncoder { get; }
public HtmlEncoder HtmlEncoder { get; }
[HtmlAttributeNotBound]
[ViewContext]

View File

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