Skip to content

Commit 052a03d

Browse files
committed
Add test and release notes
1 parent ec34001 commit 052a03d

2 files changed

Lines changed: 57 additions & 1 deletion

File tree

packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ TODO: Remove this section if there are not any updates.
2424

2525
## Performance updates
2626

27-
TODO: Remove this section if there are not any updates.
27+
- Fixed an issue where 'More Debug Options' showed options as unselected in
28+
profile mode even when selected. [TODO](https://github.com/flutter/devtools/pull/TODO)
2829

2930
## CPU profiler updates
3031

packages/devtools_app/test/service/service_extension_widgets_test.dart

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,61 @@ void main() {
222222
expect(toggle.value, false, reason: 'The extension is disabled.');
223223
});
224224
});
225+
226+
group('ServiceExtensionCheckbox', () {
227+
testWidgets('shows value state even when unavailable', (WidgetTester tester) async {
228+
final ext = extensions.disableClipLayers;
229+
final customFake = _UnavailableServiceExtensionManager();
230+
customFake.makeUnavailable(ext.extension);
231+
232+
// Override the serviceExtensionManager on mockServiceManager
233+
when(mockServiceManager.serviceExtensionManager).thenReturn(customFake);
234+
235+
// Set state to enabled: false (which means clips not disabled -> checked true)
236+
await customFake.setServiceExtensionState(
237+
ext.extension,
238+
enabled: false,
239+
value: false,
240+
);
241+
242+
final checkbox = ServiceExtensionCheckbox(serviceExtension: ext);
243+
await tester.pumpWidget(
244+
wrap(Scaffold(body: Center(child: checkbox))),
245+
);
246+
await tester.pumpAndSettle();
247+
248+
final checkboxFinder = find.byType(Checkbox);
249+
expect(checkboxFinder, findsOneWidget);
250+
251+
final checkboxWidget = tester.widget<Checkbox>(checkboxFinder);
252+
expect(checkboxWidget.value, isTrue);
253+
expect(checkboxWidget.onChanged, isNull);
254+
});
255+
});
256+
}
257+
258+
base class _UnavailableServiceExtensionManager extends FakeServiceExtensionManager {
259+
final _unavailableExtensions = <String>{};
260+
261+
void makeUnavailable(String name) {
262+
_unavailableExtensions.add(name);
263+
}
264+
265+
@override
266+
Future<bool> waitForServiceExtensionAvailable(String name) {
267+
if (_unavailableExtensions.contains(name)) {
268+
return Future.value(false);
269+
}
270+
return super.waitForServiceExtensionAvailable(name);
271+
}
272+
273+
@override
274+
bool isServiceExtensionAvailable(String name) {
275+
if (_unavailableExtensions.contains(name)) {
276+
return false;
277+
}
278+
return super.isServiceExtensionAvailable(name);
279+
}
225280
}
226281

227282
void registerServiceExtension(

0 commit comments

Comments
 (0)