@@ -59,12 +59,14 @@ class XhrTransportStream implements GrpcTransportStream {
5959 if (_incomingProcessor.isClosed) {
6060 return ;
6161 }
62- // TODO: dart-lang/web#285 use 'if' for now
63- if (_request.readyState == XMLHttpRequest .HEADERS_RECEIVED ) {
64- _onHeadersReceived ();
65- } else if (_request.readyState == XMLHttpRequest .DONE ) {
66- _onRequestDone ();
67- _close ();
62+ switch (_request.readyState) {
63+ case XMLHttpRequest .HEADERS_RECEIVED :
64+ _onHeadersReceived ();
65+ break ;
66+ case XMLHttpRequest .DONE :
67+ _onRequestDone ();
68+ _close ();
69+ break ;
6870 }
6971 });
7072
@@ -99,7 +101,7 @@ class XhrTransportStream implements GrpcTransportStream {
99101 bool _validateResponseState () {
100102 try {
101103 validateHttpStatusAndContentType (
102- _request.status, _parseHeaders ( _request.getAllResponseHeaders ()) ,
104+ _request.status, _request.responseHeaders ,
103105 rawResponse: _request.responseText);
104106 return true ;
105107 } catch (e, st) {
@@ -113,8 +115,7 @@ class XhrTransportStream implements GrpcTransportStream {
113115 if (! _validateResponseState ()) {
114116 return ;
115117 }
116- _incomingMessages
117- .add (GrpcMetadata (_parseHeaders (_request.getAllResponseHeaders ())));
118+ _incomingMessages.add (GrpcMetadata (_request.responseHeaders));
118119 }
119120
120121 void _onRequestDone () {
@@ -138,20 +139,6 @@ class XhrTransportStream implements GrpcTransportStream {
138139 _onDone (this );
139140 }
140141
141- Map <String , String > _parseHeaders (String rawHeaders) {
142- final headers = < String , String > {};
143- final lines = rawHeaders.split ('\r\n ' );
144- for (var line in lines) {
145- final index = line.indexOf (': ' );
146- if (index != - 1 ) {
147- final key = line.substring (0 , index);
148- final value = line.substring (index + 2 );
149- headers[key] = value;
150- }
151- }
152- return headers;
153- }
154-
155142 @override
156143 Future <void > terminate () async {
157144 _close ();
0 commit comments