Skip to content

Commit 7a26df3

Browse files
Add toggle to filter out SOCKET rows in Network screen (#9698)
* Add toggle to filter out socket rows in Network screen * fix: add toggle filter to hide HTTP profiler tcp sockets in Network screen * Removed visibleForTesting annotation and fixed analyzer warnings * fix: addresses PR review feedbacks * Update packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md Co-authored-by: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> * Update packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md Co-authored-by: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> * Refactor test to use activeFilter.value.settingFilters and set value directly as suggested in review. * fixed format --------- Co-authored-by: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com>
1 parent dc57d53 commit 7a26df3

3 files changed

Lines changed: 51 additions & 5 deletions

File tree

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,24 @@ class NetworkController extends DevToolsScreenController
9191
return null;
9292
}
9393

94+
static const hideHttpSocketsFilterId = 'network-hide-http-sockets';
95+
9496
static const methodFilterId = 'network-method-filter';
9597

9698
static const statusFilterId = 'network-status-filter';
9799

98100
static const typeFilterId = 'network-type-filter';
99101

102+
@override
103+
SettingFilters<NetworkRequest> createSettingFilters() => [
104+
ToggleFilter<NetworkRequest>(
105+
id: hideHttpSocketsFilterId,
106+
name: 'Hide HTTP profiler sockets',
107+
includeCallback: (request) => request is! Socket,
108+
defaultValue: false,
109+
),
110+
];
111+
100112
@override
101113
Map<String, QueryFilterArgument<NetworkRequest>> createQueryFilterArgs() => {
102114
methodFilterId: QueryFilterArgument<NetworkRequest>(
@@ -237,7 +249,6 @@ class NetworkController extends DevToolsScreenController
237249
}
238250
}
239251

240-
@visibleForTesting
241252
void processNetworkTrafficHelper(
242253
List<SocketStatistic> sockets,
243254
List<HttpProfileRequest>? httpRequests,
@@ -438,7 +449,7 @@ class NetworkController extends DevToolsScreenController
438449
super.filterData(filter);
439450
serviceConnection.errorBadgeManager.clearErrorCount(NetworkScreen.id);
440451
final queryFilter = filter.queryFilter;
441-
if (queryFilter.isEmpty) {
452+
if (filter.isEmpty) {
442453
_currentNetworkRequests.value.forEach(_checkForError);
443454
filteredData
444455
..clear()
@@ -449,6 +460,11 @@ class NetworkController extends DevToolsScreenController
449460
..clear()
450461
..addAll(
451462
_currentNetworkRequests.value.where((NetworkRequest r) {
463+
final filteredOutBySettingFilters = filter.settingFilters.any(
464+
(settingFilter) => !settingFilter.includeData(r),
465+
);
466+
if (filteredOutBySettingFilters) return false;
467+
452468
final filteredOutByQueryFilterArgument = queryFilter.filterArguments
453469
.any((argument) => !argument.matchesValue(r));
454470
if (filteredOutByQueryFilterArgument) return false;

packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ To learn more about DevTools, check out the
1515

1616
## General updates
1717

18-
TODO: Remove this section if there are not any updates.
18+
- TODO: Remove this section if there are not any updates.
1919

2020
## Inspector updates
2121

@@ -39,8 +39,7 @@ TODO: Remove this section if there are not any updates.
3939

4040
## Network profiler updates
4141

42-
- Fix crash in the Network tab when viewing binary multipart request or
43-
response bodies. [#9680](https://github.com/flutter/devtools/pull/9680)
42+
- Added a filter setting to hide HTTP-profiler socket data. [#9698](https://github.com/flutter/devtools/pull/9698)
4443

4544
## Logging updates
4645

packages/devtools_app/test/screens/network/network_controller_test.dart

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,37 @@ void main() {
259259
expect(profile, hasLength(numRequests));
260260
expect(controller.filteredData.value, hasLength(2));
261261
});
262+
263+
test('filterData hides tcp sockets via setting filter', () async {
264+
await controller.startRecording();
265+
await controller.networkService.refreshNetworkData();
266+
267+
const numRequests = 9;
268+
const numTcpSockets = 2;
269+
270+
expect(controller.filteredData.value, hasLength(numRequests));
271+
272+
// Enable the hide HTTP sockets toggle filter using activeFilter.
273+
final socketFilter = controller.activeFilter.value.settingFilters[0];
274+
socketFilter.setting.value = true;
275+
controller.setActiveFilter();
276+
277+
expect(
278+
controller.filteredData.value,
279+
hasLength(numRequests - numTcpSockets),
280+
);
281+
282+
final tcpSockets = controller.filteredData.value
283+
.whereType<Socket>()
284+
.where((s) => s.socketType == 'tcp')
285+
.toList();
286+
expect(tcpSockets, isEmpty);
287+
288+
// Disable and verify sockets are restored.
289+
socketFilter.setting.value = false;
290+
controller.setActiveFilter();
291+
expect(controller.filteredData.value, hasLength(numRequests));
292+
});
262293
});
263294

264295
group('CurrentNetworkRequests', () {

0 commit comments

Comments
 (0)