Skip to content

Commit a082ddb

Browse files
Address review feedback for Network tab lifecycle fixes.
Keep search enabled when paused with visible requests, handle RPC errors during clear, and wrap isolate profiling re-enable in allowedError. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent a4a7608 commit a082ddb

4 files changed

Lines changed: 43 additions & 9 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ class NetworkController extends DevToolsScreenController
197197
_,
198198
) async {
199199
if (_recordingNotifier.value) {
200-
await _enableNetworkTrafficRecordingOnAllIsolates();
200+
await allowedError(_enableNetworkTrafficRecordingOnAllIsolates());
201201
}
202202
}),
203203
);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ class _NetworkProfilerControlsState extends State<_NetworkProfilerControls>
205205
}
206206

207207
final screenWidth = ScreenSize(context).width;
208+
final hasRequests = controller.filteredData.value.isNotEmpty;
208209
return Column(
209210
children: [
210211
Row(
@@ -232,7 +233,7 @@ class _NetworkProfilerControlsState extends State<_NetworkProfilerControls>
232233
Expanded(
233234
child: SearchField<NetworkController>(
234235
searchController: controller,
235-
searchFieldEnabled: _recording,
236+
searchFieldEnabled: _recording || hasRequests,
236237
searchFieldWidth: screenWidth <= MediaSize.xs
237238
? defaultSearchFieldWidth
238239
: wideSearchFieldWidth,

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,18 @@ class NetworkService {
205205
final service = serviceConnection.serviceManager.service;
206206
if (service == null) return;
207207

208-
final timestamp = (await service.getVMTimelineMicros()).timestamp!;
209-
networkController.lastSocketDataRefreshMicros = timestamp;
210-
await service.forEachIsolate((isolate) async {
211-
lastHttpDataRefreshTimePerIsolate[isolate.id!] = timestamp;
212-
});
213-
await _clearSocketProfile();
214-
await _clearHttpProfile();
208+
try {
209+
final timestamp = (await service.getVMTimelineMicros()).timestamp!;
210+
networkController.lastSocketDataRefreshMicros = timestamp;
211+
await service.forEachIsolate((isolate) async {
212+
lastHttpDataRefreshTimePerIsolate[isolate.id!] = timestamp;
213+
});
214+
await _clearSocketProfile();
215+
await _clearHttpProfile();
216+
} on RPCError catch (e) {
217+
if (!e.isServiceDisposedError) {
218+
rethrow;
219+
}
220+
}
215221
}
216222
}

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ void main() {
6565

6666
group('Network Profiler', () {
6767
setUp(() {
68+
socketProfile = loadSocketProfile();
69+
httpProfile = loadHttpProfile();
6870
fakeServiceConnection = FakeServiceConnectionManager(
6971
service: FakeServiceManager.createFakeService(
7072
socketProfile: socketProfile,
@@ -369,6 +371,31 @@ void main() {
369371
await clearTimeouts(tester);
370372
},
371373
);
374+
375+
testWidgetsWithWindowSize(
376+
'search field stays enabled when recording is paused with requests',
377+
windowSize,
378+
(WidgetTester tester) async {
379+
controller = NetworkController();
380+
await pumpNetworkScreen(tester);
381+
await loadRequestsAndCheck(tester);
382+
383+
await tester.tap(find.byType(StartStopRecordingButton));
384+
await tester.pumpAndSettle();
385+
386+
expect(controller.isPolling, isFalse);
387+
388+
final searchField = tester.widget<TextField>(
389+
find.byWidgetPredicate(
390+
(widget) =>
391+
widget is TextField && widget.decoration?.hintText == 'Search',
392+
),
393+
);
394+
expect(searchField.enabled, isTrue);
395+
396+
await clearTimeouts(tester);
397+
},
398+
);
372399
});
373400

374401
group('NetworkRequestOverviewView', () {

0 commit comments

Comments
 (0)