Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,25 @@ class NetworkController extends DevToolsScreenController
return null;
}

static const hideHttpSocketsFilterId = 'network-hide-http-sockets';

static const methodFilterId = 'network-method-filter';

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

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

@override
SettingFilters<NetworkRequest> createSettingFilters() => [
ToggleFilter<NetworkRequest>(
id: hideHttpSocketsFilterId,
name: 'Hide HTTP profiler sockets',
includeCallback: (request) =>
!(request is Socket && request.socketType == 'tcp'),
defaultValue: false,
),
];

@override
Map<String, QueryFilterArgument<NetworkRequest>> createQueryFilterArgs() => {
methodFilterId: QueryFilterArgument<NetworkRequest>(
Expand Down Expand Up @@ -167,7 +180,6 @@ class NetworkController extends DevToolsScreenController

PeriodicDebouncer? _pollingTimer;

@visibleForTesting
bool get isPolling => _pollingTimer != null;

static const _pollingDuration = Duration(milliseconds: 2000);
Expand Down Expand Up @@ -237,7 +249,6 @@ class NetworkController extends DevToolsScreenController
}
}

@visibleForTesting
void processNetworkTrafficHelper(
List<SocketStatistic> sockets,
List<HttpProfileRequest>? httpRequests,
Expand Down Expand Up @@ -437,18 +448,30 @@ class NetworkController extends DevToolsScreenController
void filterData(Filter<NetworkRequest> filter) {
super.filterData(filter);
serviceConnection.errorBadgeManager.clearErrorCount(NetworkScreen.id);

// Apply setting filters (e.g. hide HTTP profiler tcp sockets toggle).
final settingFiltersList = filter.settingFilters;
final allRequests = _currentNetworkRequests.value.where((r) {
if (settingFiltersList != null) {
for (final settingFilter in settingFiltersList) {
if (!settingFilter.includeData(r)) return false;
}
}
return true;
}).toList();

final queryFilter = filter.queryFilter;
if (queryFilter.isEmpty) {
_currentNetworkRequests.value.forEach(_checkForError);
allRequests.forEach(_checkForError);
filteredData
..clear()
..addAll(_currentNetworkRequests.value);
..addAll(allRequests);
return;
}
filteredData
..clear()
..addAll(
_currentNetworkRequests.value.where((NetworkRequest r) {
allRequests.where((NetworkRequest r) {
final filteredOutByQueryFilterArgument = queryFilter.filterArguments
.any((argument) => !argument.matchesValue(r));
if (filteredOutByQueryFilterArgument) return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -600,4 +600,4 @@ class TimestampColumn extends ColumnData<NetworkRequest> {
String getDisplayValue(NetworkRequest dataObject) {
return formatDateTime(dataObject.startTimestamp!);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

part of '../constants.dart';

enum NetworkEvent { downloadAsHar }
enum NetworkEvent { downloadAsHar, hideHttpSockets }
4 changes: 3 additions & 1 deletion packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ To learn more about DevTools, check out the

## General updates

TODO: Remove this section if there are not any updates.

- Removed @visibleForTesting annotation from NetworkController and fixed analyzer warnings in network_screen.dart/network_controller.dart.
This improves code clarity and resolves unnecessary analyzer warnings.

## Inspector updates

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,47 @@ void main() {
expect(profile, hasLength(numRequests));
expect(controller.filteredData.value, hasLength(2));
});

test('filterData hides tcp sockets via setting filter', () async {
await controller.startRecording();
await controller.networkService.refreshNetworkData();

const numRequests = 9;
const numTcpSockets = 2;

expect(controller.filteredData.value, hasLength(numRequests));

// Enable the hide HTTP sockets toggle filter.
final socketFilter = controller.settingFilters
.whereType<ToggleFilter<NetworkRequest>>()
.firstWhere((f) => f.id == NetworkController.hideHttpSocketsFilterId);

// Pass the updated setting filters through setActiveFilter so the
// base class FilterControllerMixin picks them up and re-filters.
socketFilter.setting.value = true;
controller.setActiveFilter(
settingFilters: controller.settingFilters
.whereType<ToggleFilter<NetworkRequest>>()
.toList(),
);

expect(controller.filteredData.value, hasLength(numRequests - numTcpSockets));

final tcpSockets = controller.filteredData.value
.whereType<Socket>()
.where((s) => s.socketType == 'tcp')
.toList();
expect(tcpSockets, isEmpty);

// Disable and verify sockets are restored.
socketFilter.setting.value = false;
controller.setActiveFilter(
settingFilters: controller.settingFilters
.whereType<ToggleFilter<NetworkRequest>>()
.toList(),
);
expect(controller.filteredData.value, hasLength(numRequests));
});
});

group('CurrentNetworkRequests', () {
Expand Down Expand Up @@ -430,4 +471,4 @@ void main() {
});
});
});
}
}