Skip to content

Commit d05ae28

Browse files
authored
Fix some hardcoded values in cohosting (#11817)
Part of #11759 The TODOs have become TODONE.
2 parents 85ff5c3 + 205d466 commit d05ae28

File tree

6 files changed

+23
-6
lines changed

6 files changed

+23
-6
lines changed

src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/Diagnostics/CohostDocumentPullDiagnosticsEndpointBase.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost;
2222
internal abstract class CohostDocumentPullDiagnosticsEndpointBase<TRequest, TResponse>(
2323
IRemoteServiceInvoker remoteServiceInvoker,
2424
IHtmlRequestInvoker requestInvoker,
25+
IClientCapabilitiesService clientCapabilitiesService,
2526
ITelemetryReporter telemetryReporter,
2627
ILoggerFactory loggerFactory)
2728
: AbstractRazorCohostDocumentRequestHandler<TRequest, TResponse>
2829
where TRequest : notnull
2930
{
3031
private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker;
3132
private readonly IHtmlRequestInvoker _requestInvoker = requestInvoker;
33+
private readonly IClientCapabilitiesService _clientCapabilitiesService = clientCapabilitiesService;
3234
private readonly ITelemetryReporter _telemetryReporter = telemetryReporter;
3335
private readonly ILogger _logger = loggerFactory.GetOrCreateLogger<CohostDocumentPullDiagnosticsEndpointBase<TRequest, TResponse>>();
3436

@@ -109,7 +111,8 @@ await razorDocument.Project.TryGetSourceGeneratedDocumentFromHintNameAsync(hintN
109111
_logger.LogDebug($"Getting C# diagnostics for {generatedDocument.FilePath}");
110112

111113
using var _ = _telemetryReporter.TrackLspRequest(LspMethodName, "Razor.ExternalAccess", TelemetryThresholds.DiagnosticsSubLSPTelemetryThreshold, correletionId);
112-
var diagnostics = await ExternalHandlers.Diagnostics.GetDocumentDiagnosticsAsync(generatedDocument, supportsVisualStudioExtensions: true, cancellationToken).ConfigureAwait(false);
114+
var supportsVisualStudioExtensions = _clientCapabilitiesService.ClientCapabilities.SupportsVisualStudioExtensions;
115+
var diagnostics = await ExternalHandlers.Diagnostics.GetDocumentDiagnosticsAsync(generatedDocument, supportsVisualStudioExtensions, cancellationToken).ConfigureAwait(false);
113116
return diagnostics.ToArray();
114117
}
115118

src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ protected override IRemoteGoToImplementationService CreateService(in ServiceArgs
2626

2727
protected override IDocumentPositionInfoStrategy DocumentPositionInfoStrategy => PreferAttributeNameDocumentPositionInfoStrategy.Instance;
2828

29+
private readonly IClientCapabilitiesService _clientCapabilitiesService = args.ExportProvider.GetExportedValue<IClientCapabilitiesService>();
30+
2931
public ValueTask<RemoteResponse<LspLocation[]?>> GetImplementationAsync(
3032
JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo,
3133
JsonSerializableDocumentId documentId,
@@ -66,11 +68,13 @@ protected override IRemoteGoToImplementationService CreateService(in ServiceArgs
6668
.GetGeneratedDocumentAsync(cancellationToken)
6769
.ConfigureAwait(false);
6870

71+
var supportsVisualStudioExtensions = _clientCapabilitiesService.ClientCapabilities.SupportsVisualStudioExtensions;
72+
6973
var locations = await ExternalHandlers.GoToImplementation
7074
.FindImplementationsAsync(
7175
generatedDocument,
7276
positionInfo.Position.ToLinePosition(),
73-
supportsVisualStudioExtensions: true,
77+
supportsVisualStudioExtensions,
7478
cancellationToken)
7579
.ConfigureAwait(false);
7680

src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading.Tasks;
66
using Microsoft.AspNetCore.Razor.Language;
77
using Microsoft.CodeAnalysis.ExternalAccess.Razor;
8+
using Microsoft.CodeAnalysis.Razor.Protocol;
89
using Microsoft.CodeAnalysis.Razor.Remote;
910
using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem;
1011
using Microsoft.CodeAnalysis.Text;
@@ -20,6 +21,8 @@ protected override IRemoteSignatureHelpService CreateService(in ServiceArgs args
2021
=> new RemoteSignatureHelpService(in args);
2122
}
2223

24+
private readonly IClientCapabilitiesService _clientCapabilitiesService = args.ExportProvider.GetExportedValue<IClientCapabilitiesService>();
25+
2326
public ValueTask<LspSignatureHelp?> GetSignatureHelpAsync(JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, Position position, CancellationToken cancellationToken)
2427
=> RunServiceAsync(
2528
solutionInfo,
@@ -39,7 +42,8 @@ protected override IRemoteSignatureHelpService CreateService(in ServiceArgs args
3942

4043
if (DocumentMappingService.TryMapToGeneratedDocumentPosition(codeDocument.GetCSharpDocument(), absoluteIndex, out var mappedPosition, out _))
4144
{
42-
return await ExternalHandlers.SignatureHelp.GetSignatureHelpAsync(generatedDocument, mappedPosition, supportsVisualStudioExtensions: true, cancellationToken).ConfigureAwait(false);
45+
var supportsVisualStudioExtensions = _clientCapabilitiesService.ClientCapabilities.SupportsVisualStudioExtensions;
46+
return await ExternalHandlers.SignatureHelp.GetSignatureHelpAsync(generatedDocument, mappedPosition, supportsVisualStudioExtensions, cancellationToken).ConfigureAwait(false);
4347
}
4448

4549
return null;

src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentPullDiagnosticsEndpoint.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Microsoft.CodeAnalysis;
1212
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost;
1313
using Microsoft.CodeAnalysis.Razor.Logging;
14+
using Microsoft.CodeAnalysis.Razor.Protocol;
1415
using Microsoft.CodeAnalysis.Razor.Remote;
1516
using Microsoft.CodeAnalysis.Razor.Telemetry;
1617
using Microsoft.CodeAnalysis.Razor.Workspaces.Settings;
@@ -28,9 +29,10 @@ internal sealed class CohostDocumentPullDiagnosticsEndpoint(
2829
IRemoteServiceInvoker remoteServiceInvoker,
2930
IHtmlRequestInvoker requestInvoker,
3031
IClientSettingsManager clientSettingsManager,
32+
IClientCapabilitiesService clientCapabilitiesService,
3133
ITelemetryReporter telemetryReporter,
3234
ILoggerFactory loggerFactory)
33-
: CohostDocumentPullDiagnosticsEndpointBase<VSInternalDocumentDiagnosticsParams, VSInternalDiagnosticReport[]>(remoteServiceInvoker, requestInvoker, telemetryReporter, loggerFactory), IDynamicRegistrationProvider
35+
: CohostDocumentPullDiagnosticsEndpointBase<VSInternalDocumentDiagnosticsParams, VSInternalDiagnosticReport[]>(remoteServiceInvoker, requestInvoker, clientCapabilitiesService, telemetryReporter, loggerFactory), IDynamicRegistrationProvider
3436
{
3537
private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker;
3638
private readonly IClientSettingsManager _clientSettingsManager = clientSettingsManager;

src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Endpoints/DocumentPullDiagnosticsEndpoint.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost;
1111
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Features;
1212
using Microsoft.CodeAnalysis.Razor.Logging;
13+
using Microsoft.CodeAnalysis.Razor.Protocol;
1314
using Microsoft.CodeAnalysis.Razor.Remote;
1415
using Microsoft.CodeAnalysis.Razor.Telemetry;
1516

@@ -25,9 +26,10 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost;
2526
internal sealed class DocumentPullDiagnosticsEndpoint(
2627
IRemoteServiceInvoker remoteServiceInvoker,
2728
IHtmlRequestInvoker requestInvoker,
29+
IClientCapabilitiesService clientCapabilitiesService,
2830
ITelemetryReporter telemetryReporter,
2931
ILoggerFactory loggerFactory)
30-
: CohostDocumentPullDiagnosticsEndpointBase<DocumentDiagnosticParams, FullDocumentDiagnosticReport?>(remoteServiceInvoker, requestInvoker, telemetryReporter, loggerFactory), IDynamicRegistrationProvider
32+
: CohostDocumentPullDiagnosticsEndpointBase<DocumentDiagnosticParams, FullDocumentDiagnosticReport?>(remoteServiceInvoker, requestInvoker, clientCapabilitiesService, telemetryReporter, loggerFactory), IDynamicRegistrationProvider
3133
{
3234
protected override string LspMethodName => Methods.TextDocumentDiagnosticName;
3335
protected override bool SupportsHtmlDiagnostics => false;

src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Linq;
66
using System.Threading.Tasks;
77
using Microsoft.AspNetCore.Razor;
8+
using Microsoft.AspNetCore.Razor.LanguageServer.Test;
89
using Microsoft.AspNetCore.Razor.Test.Common;
910
using Microsoft.CodeAnalysis.Razor.Diagnostics;
1011
using Microsoft.CodeAnalysis.Razor.Telemetry;
@@ -159,7 +160,8 @@ private async Task VerifyDiagnosticsAsync(TestCode input, VSInternalDiagnosticRe
159160
var requestInvoker = new TestHtmlRequestInvoker([(VSInternalMethods.DocumentPullDiagnosticName, htmlResponse)]);
160161

161162
var clientSettingsManager = new ClientSettingsManager([]);
162-
var endpoint = new CohostDocumentPullDiagnosticsEndpoint(RemoteServiceInvoker, requestInvoker, clientSettingsManager, NoOpTelemetryReporter.Instance, LoggerFactory);
163+
var clientCapabilitiesService = new TestClientCapabilitiesService(new VSInternalClientCapabilities { SupportsVisualStudioExtensions = true });
164+
var endpoint = new CohostDocumentPullDiagnosticsEndpoint(RemoteServiceInvoker, requestInvoker, clientSettingsManager, clientCapabilitiesService, NoOpTelemetryReporter.Instance, LoggerFactory);
163165

164166
var result = taskListRequest
165167
? await endpoint.GetTestAccessor().HandleTaskListItemRequestAsync(document, ["TODO"], DisposalToken)

0 commit comments

Comments
 (0)