Skip to content

Commit

Permalink
Create a generalized SettingFilter class to support filtering by an…
Browse files Browse the repository at this point in the history
…y type of setting (#8432)
  • Loading branch information
kenzieschmoll authored Oct 14, 2024
1 parent b09d0a0 commit 6935011
Show file tree
Hide file tree
Showing 11 changed files with 275 additions and 175 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -118,31 +118,31 @@ class LoggingController extends DisposableController

/// The toggle filters available for the Logging screen.
@override
List<ToggleFilter<LogData>> createToggleFilters() => toggleFilters;
List<SettingFilter<LogData, Object>> createSettingFilters() => settingFilters;

@visibleForTesting
static final toggleFilters = <ToggleFilter<LogData>>[
static final settingFilters = <SettingFilter<LogData, Object>>[
if (serviceConnection.serviceManager.connectedApp?.isFlutterAppNow ??
true) ...[
ToggleFilter<LogData>(
name: 'Hide verbose Flutter framework logs (initialization, frame '
'times, image sizes)',
includeCallback: (log) => !_verboseFlutterFrameworkLogKinds
.any((kind) => kind.caseInsensitiveEquals(log.kind)),
enabledByDefault: true,
defaultValue: true,
),
ToggleFilter<LogData>(
name: 'Hide verbose Flutter service logs (service extension state '
'changes)',
includeCallback: (log) => !_verboseFlutterServiceLogKinds
.any((kind) => kind.caseInsensitiveEquals(log.kind)),
enabledByDefault: true,
defaultValue: true,
),
],
ToggleFilter<LogData>(
name: 'Hide garbage collection logs',
includeCallback: (log) => !log.kind.caseInsensitiveEquals(_gcLogKind),
enabledByDefault: true,
defaultValue: true,
),
];

Expand Down Expand Up @@ -595,11 +595,10 @@ class LoggingController extends DisposableController
super.filterData(filter);

bool filterCallback(LogData log) {
final filteredOutByToggleFilters = filter.toggleFilters.any(
(toggleFilter) =>
toggleFilter.enabled.value && !toggleFilter.includeCallback(log),
final filteredOutBySettingFilters = filter.settingFilters.any(
(settingFilter) => !settingFilter.includeData(log),
);
if (filteredOutByToggleFilters) return false;
if (filteredOutBySettingFilters) return false;

final queryFilter = filter.queryFilter;
if (!queryFilter.isEmpty) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,28 +125,28 @@ class LoggingTableModel extends DisposableController

/// The toggle filters available for the Logging screen.
@override
List<ToggleFilter<LogDataV2>> createToggleFilters() => [
List<SettingFilter<LogDataV2, bool>> createSettingFilters() => [
if (serviceConnection.serviceManager.connectedApp?.isFlutterAppNow ??
true) ...[
ToggleFilter<LogDataV2>(
name: 'Hide verbose Flutter framework logs (initialization, frame '
'times, image sizes)',
includeCallback: (log) => !_verboseFlutterFrameworkLogKinds
.any((kind) => kind.caseInsensitiveEquals(log.kind)),
enabledByDefault: true,
defaultValue: true,
),
ToggleFilter<LogDataV2>(
name: 'Hide verbose Flutter service logs (service extension state '
'changes)',
includeCallback: (log) => !_verboseFlutterServiceLogKinds
.any((kind) => kind.caseInsensitiveEquals(log.kind)),
enabledByDefault: true,
defaultValue: true,
),
],
ToggleFilter<LogDataV2>(
name: 'Hide garbage collection logs',
includeCallback: (log) => !log.kind.caseInsensitiveEquals(_gcLogKind),
enabledByDefault: true,
defaultValue: true,
),
];

Expand Down Expand Up @@ -616,11 +616,10 @@ class LoggingTableModel extends DisposableController
bool _filterCallback(LogDataV2 log) {
final filter = activeFilter.value;

final filteredOutByToggleFilters = filter.toggleFilters.any(
(toggleFilter) =>
toggleFilter.enabled.value && !toggleFilter.includeCallback(log),
final filteredOutBySettingFilters = filter.settingFilters.any(
(settingFilter) => !settingFilter.includeData(log),
);
if (filteredOutByToggleFilters) return false;
if (filteredOutBySettingFilters) return false;

final queryFilter = filter.queryFilter;
if (!queryFilter.isEmpty) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,21 +137,23 @@ class CpuProfilerController extends DisposableController

/// The toggle filters available for the CPU profiler.
@override
List<ToggleFilter<CpuStackFrame>> createToggleFilters() => [
List<SettingFilter<CpuStackFrame, bool>> createSettingFilters() => [
ToggleFilter<CpuStackFrame>(
name: 'Hide Native code',
includeCallback: (stackFrame) => !stackFrame.isNative,
enabledByDefault: true,
defaultValue: true,
),
ToggleFilter<CpuStackFrame>(
name: 'Hide core Dart libraries',
includeCallback: (stackFrame) => !stackFrame.isDartCore,
defaultValue: false,
),
if (serviceConnection.serviceManager.connectedApp?.isFlutterAppNow ??
true)
ToggleFilter<CpuStackFrame>(
name: 'Hide core Flutter libraries',
includeCallback: (stackFrame) => !stackFrame.isFlutterCore,
defaultValue: false,
),
];

Expand Down Expand Up @@ -675,12 +677,10 @@ class CpuProfilerController extends DisposableController
}) {
filter ??= activeFilter.value;
bool filterCallback(CpuStackFrame stackFrame) {
for (final toggleFilter in filter!.toggleFilters) {
if (toggleFilter.enabled.value &&
!toggleFilter.includeCallback(stackFrame)) {
return false;
}
}
final filteredOutBySettingFilters = filter!.settingFilters.any(
(settingFilter) => !settingFilter.includeData(stackFrame),
);
if (filteredOutBySettingFilters) return false;

final queryFilter = filter.queryFilter;
if (!queryFilter.isEmpty) {
Expand Down
Loading

0 comments on commit 6935011

Please sign in to comment.