Move TagHelperFactsService and export it.

- Created a `TagHelperFactsServiceInternal` and export its public counterpart in `Microsoft.VisualStudio.Editor.Razor`.
- Updated tests to react to new naming.

#1762
This commit is contained in:
N. Taylor Mullen 2017-11-14 11:57:37 -08:00
parent 520876e55d
commit 458111ad03
9 changed files with 101 additions and 26 deletions

View File

@ -11,10 +11,10 @@ namespace Microsoft.CodeAnalysis.Razor
{
internal class DefaultTagHelperCompletionService : TagHelperCompletionService
{
private readonly TagHelperFactsService _tagHelperFactsService;
private readonly TagHelperFactsServiceInternal _tagHelperFactsService;
private static readonly HashSet<TagHelperDescriptor> _emptyHashSet = new HashSet<TagHelperDescriptor>();
public DefaultTagHelperCompletionService(TagHelperFactsService tagHelperFactsService)
public DefaultTagHelperCompletionService(TagHelperFactsServiceInternal tagHelperFactsService)
{
_tagHelperFactsService = tagHelperFactsService;
}

View File

@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Razor
{
public ILanguageService CreateLanguageService(HostLanguageServices languageServices)
{
var tagHelperFactsService = languageServices.GetRequiredService<TagHelperFactsService>();
var tagHelperFactsService = languageServices.GetRequiredService<TagHelperFactsServiceInternal>();
return new DefaultTagHelperCompletionService(tagHelperFactsService);
}
}

View File

@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Razor.Language;
namespace Microsoft.CodeAnalysis.Razor
{
internal class DefaultTagHelperFactsService : TagHelperFactsService
internal class DefaultTagHelperFactsServiceInternal : TagHelperFactsServiceInternal
{
public override TagHelperBinding GetTagHelperBinding(
TagHelperDocumentContext documentContext,

View File

@ -6,12 +6,12 @@ using Microsoft.CodeAnalysis.Host.Mef;
namespace Microsoft.CodeAnalysis.Razor
{
[ExportLanguageServiceFactory(typeof(TagHelperFactsService), RazorLanguage.Name, ServiceLayer.Default)]
internal class DefaultTagHelperFactsServiceFactory : ILanguageServiceFactory
[ExportLanguageServiceFactory(typeof(TagHelperFactsServiceInternal), RazorLanguage.Name, ServiceLayer.Default)]
internal class DefaultTagHelperFactsServiceInternalFactory : ILanguageServiceFactory
{
public ILanguageService CreateLanguageService(HostLanguageServices languageServices)
{
return new DefaultTagHelperFactsService();
return new DefaultTagHelperFactsServiceInternal();
}
}
}

View File

@ -0,0 +1,20 @@
// 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.Collections.Generic;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis.Host;
namespace Microsoft.CodeAnalysis.Razor
{
internal abstract class TagHelperFactsServiceInternal : ILanguageService
{
public abstract TagHelperBinding GetTagHelperBinding(TagHelperDocumentContext documentContext, string tagName, IEnumerable<KeyValuePair<string, string>> attributes, string parentTag, bool parentIsTagHelper);
public abstract IEnumerable<BoundAttributeDescriptor> GetBoundTagHelperAttributes(TagHelperDocumentContext documentContext, string attributeName, TagHelperBinding binding);
public abstract IReadOnlyList<TagHelperDescriptor> GetTagHelpersGivenTag(TagHelperDocumentContext documentContext, string tagName, string parentTag);
public abstract IReadOnlyList<TagHelperDescriptor> GetTagHelpersGivenParent(TagHelperDocumentContext documentContext, string parentTag);
}
}

View File

@ -0,0 +1,56 @@
// 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;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis.Razor;
namespace Microsoft.VisualStudio.Editor.Razor
{
[System.Composition.Shared]
[Export(typeof(TagHelperFactsService))]
internal class DefaultTagHelperFactsService : TagHelperFactsService
{
private readonly TagHelperFactsServiceInternal _tagHelperFactsService;
[ImportingConstructor]
public DefaultTagHelperFactsService(VisualStudioWorkspaceAccessor workspaceAccessor)
{
var razorLanguageServices = workspaceAccessor.Workspace.Services.GetLanguageServices(RazorLanguage.Name);
_tagHelperFactsService = razorLanguageServices.GetRequiredService<TagHelperFactsServiceInternal>();
}
public override TagHelperBinding GetTagHelperBinding(
TagHelperDocumentContext documentContext,
string tagName,
IEnumerable<KeyValuePair<string, string>> attributes,
string parentTag,
bool parentIsTagHelper)
{
return _tagHelperFactsService.GetTagHelperBinding(documentContext, tagName, attributes, parentTag, parentIsTagHelper);
}
public override IEnumerable<BoundAttributeDescriptor> GetBoundTagHelperAttributes(
TagHelperDocumentContext documentContext,
string attributeName,
TagHelperBinding binding)
{
return _tagHelperFactsService.GetBoundTagHelperAttributes(documentContext, attributeName, binding);
}
public override IReadOnlyList<TagHelperDescriptor> GetTagHelpersGivenTag(
TagHelperDocumentContext documentContext,
string tagName,
string parentTag)
{
return _tagHelperFactsService.GetTagHelpersGivenTag(documentContext, tagName, parentTag);
}
public override IReadOnlyList<TagHelperDescriptor> GetTagHelpersGivenParent(TagHelperDocumentContext documentContext, string parentTag)
{
return _tagHelperFactsService.GetTagHelpersGivenParent(documentContext, parentTag);
}
}
}

View File

@ -3,11 +3,10 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis.Host;
namespace Microsoft.CodeAnalysis.Razor
namespace Microsoft.VisualStudio.Editor.Razor
{
public abstract class TagHelperFactsService : ILanguageService
public abstract class TagHelperFactsService
{
public abstract TagHelperBinding GetTagHelperBinding(TagHelperDocumentContext documentContext, string tagName, IEnumerable<KeyValuePair<string, string>> attributes, string parentTag, bool parentIsTagHelper);

View File

@ -994,8 +994,8 @@ namespace Microsoft.CodeAnalysis.Razor
private static DefaultTagHelperCompletionService CreateTagHelperCompletionFactsService()
{
var tagHelperFactService = new DefaultTagHelperFactsService();
var completionFactService = new DefaultTagHelperCompletionService(tagHelperFactService);
var tagHelperFactsService = new DefaultTagHelperFactsServiceInternal();
var completionFactService = new DefaultTagHelperCompletionService(tagHelperFactsService);
return completionFactService;
}

View File

@ -8,7 +8,7 @@ using Xunit;
namespace Microsoft.CodeAnalysis.Razor
{
public class DefaultTagHelperFactsServiceTest
public class DefaultTagHelperFactsServiceInternalTest
{
// Purposefully not thoroughly testing DefaultTagHelperFactsService.GetTagHelperBinding because it's a pass through
// into TagHelperDescriptorProvider.GetTagHelperBinding.
@ -24,7 +24,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var binding = service.GetTagHelperBinding(documentContext, "!a", Enumerable.Empty<KeyValuePair<string, string>>(), parentTag: null, parentIsTagHelper: false);
@ -66,7 +66,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build(),
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
var attributes = new[]
{
new KeyValuePair<string, string>("asp-for", "Name")
@ -108,7 +108,7 @@ namespace Microsoft.CodeAnalysis.Razor
documentDescriptors[0].BoundAttributes.Last()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
var binding = service.GetTagHelperBinding(documentContext, "a", Enumerable.Empty<KeyValuePair<string, string>>(), parentTag: null, parentIsTagHelper: false);
// Act
@ -143,7 +143,7 @@ namespace Microsoft.CodeAnalysis.Razor
documentDescriptors[0].BoundAttributes.First()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
var binding = service.GetTagHelperBinding(documentContext, "input", Enumerable.Empty<KeyValuePair<string, string>>(), parentTag: null, parentIsTagHelper: false);
// Act
@ -164,7 +164,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenTag(documentContext, "!strong", parentTag: null);
@ -184,7 +184,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenTag(documentContext, "strong", "p");
@ -217,7 +217,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenTag(documentContext, "a", "div");
@ -244,7 +244,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create("th", documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenTag(documentContext, "thstrong", "div");
@ -277,7 +277,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenTag(documentContext, "strong", "div");
@ -297,7 +297,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenParent(documentContext, parentTag: null /* root */);
@ -322,7 +322,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenParent(documentContext, parentTag: null /* root */);
@ -343,7 +343,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenParent(documentContext, "p");
@ -376,7 +376,7 @@ namespace Microsoft.CodeAnalysis.Razor
.Build()
};
var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors);
var service = new DefaultTagHelperFactsService();
var service = new DefaultTagHelperFactsServiceInternal();
// Act
var descriptors = service.GetTagHelpersGivenParent(documentContext, "div");