diff --git a/src/Microsoft.VisualStudio.Editor.Razor/DefaultTextBufferCodeDocumentProvider.cs b/src/Microsoft.VisualStudio.Editor.Razor/DefaultTextBufferCodeDocumentProvider.cs index 3298c414d0..a9df7a9c45 100644 --- a/src/Microsoft.VisualStudio.Editor.Razor/DefaultTextBufferCodeDocumentProvider.cs +++ b/src/Microsoft.VisualStudio.Editor.Razor/DefaultTextBufferCodeDocumentProvider.cs @@ -12,19 +12,6 @@ namespace Microsoft.VisualStudio.Editor.Razor [Export(typeof(TextBufferCodeDocumentProvider))] internal class DefaultTextBufferCodeDocumentProvider : TextBufferCodeDocumentProvider { - private readonly RazorEditorFactoryService _editorFactoryService; - - [ImportingConstructor] - public DefaultTextBufferCodeDocumentProvider(RazorEditorFactoryService editorFactoryService) - { - if (editorFactoryService == null) - { - throw new ArgumentNullException(nameof(editorFactoryService)); - } - - _editorFactoryService = editorFactoryService; - } - public override bool TryGetFromBuffer(ITextBuffer textBuffer, out RazorCodeDocument codeDocument) { if (textBuffer == null) @@ -32,7 +19,7 @@ namespace Microsoft.VisualStudio.Editor.Razor throw new ArgumentNullException(nameof(textBuffer)); } - if (_editorFactoryService.TryGetParser(textBuffer, out var parser) && parser.CodeDocument != null) + if (textBuffer.Properties.TryGetProperty(typeof(VisualStudioRazorParser), out VisualStudioRazorParser parser) && parser.CodeDocument != null) { codeDocument = parser.CodeDocument; return true; diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferCodeDocumentProviderTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferCodeDocumentProviderTest.cs index 12ebfd2330..8daedb4d73 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferCodeDocumentProviderTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferCodeDocumentProviderTest.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.VisualStudio.Text; +using Microsoft.VisualStudio.Utilities; using Moq; using Xunit; @@ -11,14 +12,17 @@ namespace Microsoft.VisualStudio.Editor.Razor public class DefaultTextBufferCodeDocumentProviderTest { [Fact] - public void TryGetFromBuffer_SucceedsIfParserFromProviderHasCodeDocument() + public void TryGetFromBuffer_SucceedsIfParserHasCodeDocument() { // Arrange var expectedCodeDocument = TestRazorCodeDocument.Create("Hello World"); VisualStudioRazorParser parser = new DefaultVisualStudioRazorParser(expectedCodeDocument); - var parserProvider = Mock.Of(p => p.TryGetParser(It.IsAny(), out parser) == true); - var textBuffer = Mock.Of(); - var provider = new DefaultTextBufferCodeDocumentProvider(parserProvider); + var properties = new PropertyCollection() + { + [typeof(VisualStudioRazorParser)] = parser + }; + var textBuffer = Mock.Of(buffer => buffer.Properties == properties); + var provider = new DefaultTextBufferCodeDocumentProvider(); // Act var result = provider.TryGetFromBuffer(textBuffer, out var codeDocument); @@ -29,13 +33,16 @@ namespace Microsoft.VisualStudio.Editor.Razor } [Fact] - public void TryGetFromBuffer_FailsIfParserFromProviderMissingCodeDocument() + public void TryGetFromBuffer_FailsIfParserMissingCodeDocument() { // Arrange VisualStudioRazorParser parser = new DefaultVisualStudioRazorParser(codeDocument: null); - var parserProvider = Mock.Of(p => p.TryGetParser(It.IsAny(), out parser) == true); - var textBuffer = Mock.Of(); - var provider = new DefaultTextBufferCodeDocumentProvider(parserProvider); + var properties = new PropertyCollection() + { + [typeof(VisualStudioRazorParser)] = parser + }; + var textBuffer = Mock.Of(buffer => buffer.Properties == properties); + var provider = new DefaultTextBufferCodeDocumentProvider(); // Act var result = provider.TryGetFromBuffer(textBuffer, out var codeDocument); @@ -49,10 +56,8 @@ namespace Microsoft.VisualStudio.Editor.Razor public void TryGetFromBuffer_FailsIfNoParserIsAvailable() { // Arrange - VisualStudioRazorParser parser = null; - var parserProvider = Mock.Of(p => p.TryGetParser(It.IsAny(), out parser) == false); - var textBuffer = Mock.Of(); - var provider = new DefaultTextBufferCodeDocumentProvider(parserProvider); + var textBuffer = Mock.Of(buffer => buffer.Properties == new PropertyCollection()); + var provider = new DefaultTextBufferCodeDocumentProvider(); // Act var result = provider.TryGetFromBuffer(textBuffer, out var codeDocument);