@@ -39,8 +39,9 @@ class CronetStreamedResponse extends _StreamedResponseWithUrl {
39
39
///
40
40
/// It will be the empty string or `'unknown'` if no protocol was negotiated,
41
41
/// the protocol is not known, or when using plain HTTP or HTTPS.
42
- String get negotiatedProtocol =>
43
- _responseInfo.getNegotiatedProtocol ().toDartString (releaseOriginal: true );
42
+ String get negotiatedProtocol => _responseInfo
43
+ .getNegotiatedProtocol ()!
44
+ .toDartString (releaseOriginal: true );
44
45
45
46
/// The minimum count of bytes received from the network to process this
46
47
/// request.
@@ -124,7 +125,7 @@ class CronetEngine {
124
125
bool ? enableQuic,
125
126
String ? storagePath,
126
127
String ? userAgent}) {
127
- final builder = jb.CronetEngine_Builder (
128
+ final builder = jb.CronetEngine$Builder (
128
129
JObject .fromReference (Jni .getCachedApplicationContext ()));
129
130
130
131
try {
@@ -159,7 +160,7 @@ class CronetEngine {
159
160
builder.setUserAgent (userAgent.toJString ());
160
161
}
161
162
162
- return CronetEngine ._(builder.build ());
163
+ return CronetEngine ._(builder.build ()! );
163
164
} on JniException catch (e) {
164
165
// TODO: Decode this exception in a better way when
165
166
// https://github.com/dart-lang/jnigen/issues/239 is fixed.
@@ -182,12 +183,12 @@ class CronetEngine {
182
183
}
183
184
184
185
Map <String , String > _cronetToClientHeaders (
185
- JMap <JString , JList <JString > > cronetHeaders) =>
186
+ JMap <JString ? , JList <JString ?>? > cronetHeaders) =>
186
187
cronetHeaders.map ((key, value) => MapEntry (
187
- key.toDartString (releaseOriginal: true ).toLowerCase (),
188
- value.join (',' )));
188
+ key! .toDartString (releaseOriginal: true ).toLowerCase (),
189
+ value! .join (',' )));
189
190
190
- jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks (
191
+ jb.UrlRequestCallbackProxy$UrlRequestCallbackInterface _urlRequestCallbacks (
191
192
BaseRequest request,
192
193
Completer <CronetStreamedResponse > responseCompleter,
193
194
HttpClientRequestProfile ? profile) {
@@ -198,21 +199,24 @@ jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks(
198
199
199
200
// The order of callbacks generated by Cronet is documented here:
200
201
// https://developer.android.com/guide/topics/connectivity/cronet/lifecycle
201
- return jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface .implement (
202
- jb.$UrlRequestCallbackProxy_UrlRequestCallbackInterface (
202
+ return jb.UrlRequestCallbackProxy$UrlRequestCallbackInterface .implement (
203
+ // All of the variables in the interface are non-nullable with the
204
+ // exception of onFailed's UrlResponseInfo as specified in:
205
+ // https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/api/src/org/chromium/net/UrlRequest.java;l=232
206
+ jb.$UrlRequestCallbackProxy$UrlRequestCallbackInterface (
203
207
onResponseStarted: (urlRequest, responseInfo) {
204
208
responseStream = StreamController (onCancel: () {
205
209
// The user did `response.stream.cancel()`. We can just pretend that
206
210
// the response completed normally.
207
211
if (done) return ;
208
212
done = true ;
209
- urlRequest.cancel ();
213
+ urlRequest! .cancel ();
210
214
responseStream! .sink.close ();
211
215
jByteBuffer? .release ();
212
216
profile? .responseData.close ();
213
217
});
214
218
final responseHeaders =
215
- _cronetToClientHeaders (responseInfo.getAllHeaders ());
219
+ _cronetToClientHeaders (responseInfo! .getAllHeaders ()! );
216
220
int ? contentLength;
217
221
218
222
switch (responseHeaders['content-length' ]) {
@@ -222,7 +226,7 @@ jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks(
222
226
'Invalid content-length header [$contentLengthHeader ].' ,
223
227
request.url,
224
228
));
225
- urlRequest.cancel ();
229
+ urlRequest? .cancel ();
226
230
return ;
227
231
case final contentLengthHeader?:
228
232
contentLength = int .parse (contentLengthHeader);
@@ -232,10 +236,10 @@ jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks(
232
236
responseInfo.getHttpStatusCode (),
233
237
responseInfo: responseInfo,
234
238
url: Uri .parse (
235
- responseInfo.getUrl ().toDartString (releaseOriginal: true )),
239
+ responseInfo.getUrl ()! .toDartString (releaseOriginal: true )),
236
240
contentLength: contentLength,
237
241
reasonPhrase: responseInfo
238
- .getHttpStatusText ()
242
+ .getHttpStatusText ()!
239
243
.toDartString (releaseOriginal: true ),
240
244
request: request,
241
245
isRedirect: false ,
@@ -247,39 +251,40 @@ jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks(
247
251
? ..contentLength = contentLength
248
252
..headersCommaValues = responseHeaders
249
253
..isRedirect = false
250
- ..reasonPhrase =
251
- responseInfo.getHttpStatusText ().toDartString (releaseOriginal: true )
254
+ ..reasonPhrase = responseInfo
255
+ .getHttpStatusText ()!
256
+ .toDartString (releaseOriginal: true )
252
257
..startTime = DateTime .now ()
253
258
..statusCode = responseInfo.getHttpStatusCode ();
254
259
jByteBuffer = JByteBuffer .allocateDirect (_bufferSize);
255
- urlRequest.read (jByteBuffer! );
260
+ urlRequest? .read (jByteBuffer! );
256
261
},
257
262
onRedirectReceived: (urlRequest, responseInfo, newLocationUrl) {
258
263
if (done) return ;
259
264
final responseHeaders =
260
- _cronetToClientHeaders (responseInfo.getAllHeaders ());
265
+ _cronetToClientHeaders (responseInfo! .getAllHeaders ()! );
261
266
262
267
if (! request.followRedirects) {
263
- urlRequest.cancel ();
268
+ urlRequest! .cancel ();
264
269
responseCompleter.complete (CronetStreamedResponse ._(
265
270
const Stream .empty (), // Cronet provides no body for redirects.
266
271
responseInfo.getHttpStatusCode (),
267
272
responseInfo: responseInfo,
268
273
url: Uri .parse (
269
- responseInfo.getUrl ().toDartString (releaseOriginal: true )),
274
+ responseInfo.getUrl ()! .toDartString (releaseOriginal: true )),
270
275
contentLength: 0 ,
271
276
reasonPhrase: responseInfo
272
- .getHttpStatusText ()
277
+ .getHttpStatusText ()!
273
278
.toDartString (releaseOriginal: true ),
274
279
request: request,
275
280
isRedirect: true ,
276
- headers: _cronetToClientHeaders (responseInfo.getAllHeaders ())));
281
+ headers: _cronetToClientHeaders (responseInfo.getAllHeaders ()! )));
277
282
278
283
profile? .responseData
279
284
? ..headersCommaValues = responseHeaders
280
285
..isRedirect = true
281
286
..reasonPhrase = responseInfo
282
- .getHttpStatusText ()
287
+ .getHttpStatusText ()!
283
288
.toDartString (releaseOriginal: true )
284
289
..startTime = DateTime .now ()
285
290
..statusCode = responseInfo.getHttpStatusCode ();
@@ -294,23 +299,23 @@ jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks(
294
299
// does not seem to have a way to get the method so we'd have to
295
300
// calculate it according to the rules in RFC-7231.
296
301
method: 'GET' ,
297
- location: newLocationUrl.toDartString (releaseOriginal: true )));
298
- urlRequest.followRedirect ();
302
+ location: newLocationUrl! .toDartString (releaseOriginal: true )));
303
+ urlRequest! .followRedirect ();
299
304
} else {
300
- urlRequest.cancel ();
305
+ urlRequest! .cancel ();
301
306
responseCompleter.completeError (
302
307
ClientException ('Redirect limit exceeded' , request.url));
303
308
}
304
309
},
305
310
onReadCompleted: (urlRequest, responseInfo, byteBuffer) {
306
311
if (done) return ;
307
- byteBuffer.flip ();
312
+ byteBuffer! .flip ();
308
313
final data = jByteBuffer! .asUint8List ().sublist (0 , byteBuffer.remaining);
309
314
responseStream! .add (data);
310
315
profile? .responseData.bodySink.add (data);
311
316
312
317
byteBuffer.clear ();
313
- urlRequest.read (byteBuffer);
318
+ urlRequest! .read (byteBuffer);
314
319
},
315
320
onSucceeded: (urlRequest, responseInfo) {
316
321
if (done) return ;
@@ -319,7 +324,7 @@ jb.UrlRequestCallbackProxy_UrlRequestCallbackInterface _urlRequestCallbacks(
319
324
jByteBuffer? .release ();
320
325
profile? .responseData.close ();
321
326
},
322
- onFailed: (urlRequest, responseInfo, cronetException) {
327
+ onFailed: (urlRequest, responseInfo /* can be null */ , cronetException) {
323
328
if (done) return ;
324
329
done = true ;
325
330
final error = ClientException (
@@ -442,7 +447,8 @@ class CronetClient extends BaseClient {
442
447
jb.UrlRequestCallbackProxy (
443
448
_urlRequestCallbacks (request, responseCompleter, profile)),
444
449
_executor,
445
- )..setHttpMethod (request.method.toJString ());
450
+ )!
451
+ ..setHttpMethod (request.method.toJString ());
446
452
447
453
var headers = request.headers;
448
454
if (body.isNotEmpty &&
@@ -471,7 +477,7 @@ class CronetClient extends BaseClient {
471
477
builder.setUploadDataProvider (
472
478
jb.UploadDataProviders .create$2 (data), _executor);
473
479
}
474
- builder.build ().start ();
480
+ builder.build ()! .start ();
475
481
return responseCompleter.future;
476
482
}
477
483
}
0 commit comments