Skip to content

Commit b1b848c

Browse files
committed
Added size support to network tab
1 parent 9be2c88 commit b1b848c

4 files changed

Lines changed: 63 additions & 0 deletions

File tree

packages/devtools_app/lib/src/screens/network/network_model.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ abstract class NetworkRequest
2929

3030
int? get port;
3131

32+
int? get requestBytes => null;
33+
int? get responseBytes => null;
34+
3235
bool get didFail;
3336

3437
/// True if the request hasn't completed yet.
@@ -160,6 +163,12 @@ class Socket extends NetworkRequest {
160163
@override
161164
int get port => _socket.port;
162165

166+
@override
167+
int get requestBytes => writeBytes;
168+
169+
@override
170+
int get responseBytes => readBytes;
171+
163172
// TODO(kenz): what determines a web socket request failure?
164173
@override
165174
bool get didFail => false;

packages/devtools_app/lib/src/screens/network/network_request_inspector_views.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,14 @@ class NetworkRequestOverviewView extends StatelessWidget {
658658
),
659659
const SizedBox(height: defaultSpacing),
660660
],
661+
const SizedBox(height: defaultSpacing),
662+
_buildRow(
663+
context: context,
664+
title: 'Size',
665+
child: _valueText(_formatBytes(data.responseBytes)),
666+
),
667+
const SizedBox(height: defaultSpacing),
668+
661669
if (data.contentType != null) ...[
662670
_buildRow(
663671
context: context,
@@ -669,6 +677,15 @@ class NetworkRequestOverviewView extends StatelessWidget {
669677
];
670678
}
671679

680+
String _formatBytes(int? bytes) {
681+
if (bytes == null) return '-';
682+
if (bytes < 1024) return '$bytes B';
683+
if (bytes < 1024 * 1024) {
684+
return '${(bytes / 1024).toStringAsFixed(1)} KB';
685+
}
686+
return '${(bytes / (1024 * 1024)).toStringAsFixed(1)} MB';
687+
}
688+
672689
List<Widget> _buildTimingOverview(BuildContext context) {
673690
return [
674691
_buildRow(

packages/devtools_app/lib/src/screens/network/network_screen.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ class NetworkRequestsTable extends StatelessWidget {
371371
statusColumn,
372372
typeColumn,
373373
durationColumn,
374+
const ResponseSizeColumn(),
374375
timestampColumn,
375376
actionsColumn,
376377
];
@@ -405,6 +406,28 @@ class NetworkRequestsTable extends StatelessWidget {
405406
}
406407
}
407408

409+
String _formatBytes(int? bytes) {
410+
if (bytes == null) return '-';
411+
if (bytes < 1024) return '$bytes B';
412+
if (bytes < 1024 * 1024) {
413+
return '${(bytes / 1024).toStringAsFixed(1)} KB';
414+
}
415+
return '${(bytes / (1024 * 1024)).toStringAsFixed(1)} MB';
416+
}
417+
418+
class ResponseSizeColumn extends ColumnData<NetworkRequest> {
419+
const ResponseSizeColumn()
420+
: super('Size', alignment: ColumnAlignment.right, fixedWidthPx: 90);
421+
422+
@override
423+
int? getValue(NetworkRequest data) => data.responseBytes;
424+
425+
@override
426+
String getDisplayValue(NetworkRequest data) {
427+
return _formatBytes(data.responseBytes);
428+
}
429+
}
430+
408431
class AddressColumn extends ColumnData<NetworkRequest>
409432
implements ColumnRenderer<NetworkRequest> {
410433
AddressColumn()

packages/devtools_app/lib/src/shared/http/http_request_data.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,20 @@ class DartIOHttpRequestData extends NetworkRequest {
212212
return connectionInfo != null ? connectionInfo[_localPortKey] : null;
213213
}
214214

215+
@override
216+
int? get responseBytes {
217+
final headers = responseHeaders;
218+
final contentLength = headers?['content-length'];
219+
220+
if (contentLength is String) {
221+
return int.tryParse(contentLength);
222+
}
223+
if (contentLength is List && contentLength.isNotEmpty) {
224+
return int.tryParse(contentLength.first);
225+
}
226+
return null;
227+
}
228+
215229
/// True if the HTTP request hasn't completed yet, determined by the lack of
216230
/// an end time in the response data.
217231
@override

0 commit comments

Comments
 (0)