Skip to content
Merged
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 @@ -40,6 +40,34 @@ class OfflineFileException implements Exception {
String toString() => message;
}

class MemoryFeatureControllers {
/// [diffPaneController] is passed for testability.
MemoryFeatureControllers(DiffPaneController? diffPaneController) {
diff = diffPaneController ?? DiffPaneController(SnapshotTaker());
}

late DiffPaneController diff;
ProfilePaneController profile = ProfilePaneController();
TracingPaneController tracing = TracingPaneController();

void reset() {
diff.dispose();
diff = DiffPaneController(SnapshotTaker());

profile.dispose();
profile = ProfilePaneController();

tracing.dispose();
tracing = TracingPaneController();
}

void dispose() {
tracing.dispose();
diff.dispose();
profile.dispose();
}
}

/// This class contains the business logic for [memory.dart].
///
/// This class must not have direct dependencies on dart:html. This allows tests
Expand All @@ -49,8 +77,8 @@ class MemoryController extends DisposableController
MemoryController({DiffPaneController? diffPaneController}) {
memoryTimeline = MemoryTimeline(offline);
memoryLog = _MemoryLog(this);
this.diffPaneController =
diffPaneController ?? DiffPaneController(SnapshotTaker());

controllers = MemoryFeatureControllers(diffPaneController);

// Update the chart when the memorySource changes.
addAutoDisposeListener(memorySourceNotifier, () async {
Expand All @@ -66,12 +94,8 @@ class MemoryController extends DisposableController
});
}

/// The controller is late to enable test injection.
late final DiffPaneController diffPaneController;

final profilePaneController = ProfilePaneController();

final tracingPaneController = TracingPaneController();
/// Sub-controllers of memory controller.
late final MemoryFeatureControllers controllers;

/// Index of the selected feature tab.
///
Expand Down Expand Up @@ -218,6 +242,7 @@ class MemoryController extends DisposableController

void _handleConnectionStart(ServiceConnectionManager serviceManager) {
_refreshShouldShowLeaksTab();

if (_memoryTracker == null) {
_memoryTracker = MemoryTracker(this);
_memoryTracker!.start();
Expand Down Expand Up @@ -304,6 +329,7 @@ class MemoryController extends DisposableController
_memoryTracker?.stop();
_memoryTrackerController.add(_memoryTracker);

controllers.reset();
_disconnectController.add(null);
hasStopped = true;
}
Expand Down Expand Up @@ -375,6 +401,7 @@ class MemoryController extends DisposableController
unawaited(_disconnectController.close());
unawaited(_memoryTrackerController.close());
_memoryTracker?.dispose();
controllers.dispose();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class MemoryTabView extends StatelessWidget {
),
tabView: KeepAliveWrapper(
child: AllocationProfileTableView(
controller: controller.profilePaneController,
controller: controller.controllers.profile,
),
),
),
Expand All @@ -78,7 +78,7 @@ class MemoryTabView extends StatelessWidget {
),
tabView: KeepAliveWrapper(
child: DiffPane(
diffController: controller.diffPaneController,
diffController: controller.controllers.diff,
),
),
),
Expand All @@ -89,7 +89,7 @@ class MemoryTabView extends StatelessWidget {
gaPrefix: _gaPrefix,
),
tabView: KeepAliveWrapper(
child: TracingPane(controller: controller.tracingPaneController),
child: TracingPane(controller: controller.controllers.tracing),
),
),
if (controller.shouldShowLeaksTab.value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ void main() {

testWidgetsWithWindowSize('records and deletes snapshots', windowSize,
(WidgetTester tester) async {
final snapshots = scene.controller.diffPaneController.core.snapshots;
final snapshots = scene.controller.controllers.diff.core.snapshots;
// Check the list contains only documentation item.
expect(snapshots.value.length, equals(1));
await pumpScene(tester);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void main() {
await pumpMemoryScreen(tester);

final allocationProfileController =
scene.controller.profilePaneController;
scene.controller.controllers.profile;

preferences.toggleVmDeveloperMode(false);
await navigateToAllocationProfile(tester, allocationProfileController);
Expand Down Expand Up @@ -100,7 +100,7 @@ void main() {
await pumpMemoryScreen(tester);

final allocationProfileController =
scene.controller.profilePaneController;
scene.controller.controllers.profile;
await navigateToAllocationProfile(tester, allocationProfileController);

// We'll clear it for now so we can tell when it's refreshed.
Expand Down Expand Up @@ -130,7 +130,7 @@ void main() {
await pumpMemoryScreen(tester);

final allocationProfileController =
scene.controller.profilePaneController;
scene.controller.controllers.profile;

await navigateToAllocationProfile(tester, allocationProfileController);

Expand Down