@@ -87,13 +87,64 @@ public async Task HttpVersion_Set_HttpRequestMessageVersionChanged()
8787 Assert . AreEqual ( HttpVersion . Version20 , response . Version ) ;
8888 }
8989
90+ [ Test ]
91+ public async Task SendAsync_GrpcCall_ResponseStreamingPropertySet ( )
92+ {
93+ // Arrange
94+ var request = new HttpRequestMessage
95+ {
96+ Version = HttpVersion . Version20 ,
97+ Content = new ByteArrayContent ( Array . Empty < byte > ( ) )
98+ {
99+ Headers = { ContentType = new MediaTypeHeaderValue ( "application/grpc" ) }
100+ }
101+ } ;
102+ var testHttpHandler = new TestHttpHandler ( ) ;
103+ var grpcWebHandler = new GrpcWebHandler ( GrpcWebMode . GrpcWeb , testHttpHandler ) ;
104+ var messageInvoker = new HttpMessageInvoker ( grpcWebHandler ) ;
105+
106+ // Act
107+ await messageInvoker . SendAsync ( request , CancellationToken . None ) ;
108+
109+ // Assert
110+ Assert . AreEqual ( true , testHttpHandler . WebAssemblyEnableStreamingResponse ) ;
111+ }
112+
113+ [ Test ]
114+ public async Task SendAsync_NonGrpcCall_ResponseStreamingPropertyNotSet ( )
115+ {
116+ // Arrange
117+ var request = new HttpRequestMessage
118+ {
119+ Version = HttpVersion . Version20 ,
120+ Content = new ByteArrayContent ( Array . Empty < byte > ( ) )
121+ {
122+ Headers = { ContentType = new MediaTypeHeaderValue ( "application/text" ) }
123+ }
124+ } ;
125+ var testHttpHandler = new TestHttpHandler ( ) ;
126+ var grpcWebHandler = new GrpcWebHandler ( GrpcWebMode . GrpcWeb , testHttpHandler ) ;
127+ var messageInvoker = new HttpMessageInvoker ( grpcWebHandler ) ;
128+
129+ // Act
130+ await messageInvoker . SendAsync ( request , CancellationToken . None ) ;
131+
132+ // Assert
133+ Assert . AreEqual ( null , testHttpHandler . WebAssemblyEnableStreamingResponse ) ;
134+ }
135+
90136 private class TestHttpHandler : HttpMessageHandler
91137 {
92138 public Version ? RequestVersion { get ; private set ; }
139+ public bool ? WebAssemblyEnableStreamingResponse { get ; private set ; }
93140
94141 protected override Task < HttpResponseMessage > SendAsync ( HttpRequestMessage request , CancellationToken cancellationToken )
95142 {
96143 RequestVersion = request . Version ;
144+ if ( request . Properties . TryGetValue ( GrpcWebHandler . WebAssemblyEnableStreamingResponseKey , out var enableStreaming ) )
145+ {
146+ WebAssemblyEnableStreamingResponse = ( bool ) enableStreaming ;
147+ }
97148
98149 return Task . FromResult ( new HttpResponseMessage ( )
99150 {
0 commit comments