DesktopUpdaterController.forTesting constructor

  1. @visibleForTesting
DesktopUpdaterController.forTesting({
  1. required Uri? appArchiveUrl,
  2. required String expectedPackageId,
  3. required UpdateRecoveryStore recoveryStore,
  4. required Map<String, String> trustedReleasePublicKeys,
  5. DesktopUpdateLocalization? localization,
  6. String channel = "stable",
  7. String? installationIdentity,
  8. UpdatePreferences? preferences,
  9. DesktopUpdaterTelemetry? telemetry,
  10. MinimumOSSupportChecker? isMinimumOSSupported,
  11. UpdateRequestHeadersProvider? requestHeadersProvider,
  12. UpdateDiagnosticsRecorder? diagnosticsRecorder,
  13. Future<void> onProblemReport(
    1. UpdateProblemReport report
    )?,
  14. FutureOr<void> onCleanupReport(
    1. UpdateCleanupReport report
    )?,
  15. bool skipInitialVersionCheck = false,
  16. ReleaseNotesLoader? releaseNotesLoader,
  17. Uri? releaseNotesUrl,
  18. ReleaseNotesFetcher? releaseNotesFetcher,
  19. ExternalUrlLauncher? externalUrlLauncher,
  20. bool? isWindows,
})

Creates a controller with injected collaborators for unit testing.

Identical to the default constructor but accepts an optional releaseNotesFetcher so tests can substitute a fake HTTP layer without exposing that seam in the public API.

Implementation

@visibleForTesting
DesktopUpdaterController.forTesting({
  required Uri? appArchiveUrl,
  required String expectedPackageId,
  required UpdateRecoveryStore recoveryStore,
  required Map<String, String> trustedReleasePublicKeys,
  DesktopUpdateLocalization? localization,
  this.channel = "stable",
  this.installationIdentity,
  this.preferences,
  this.telemetry,
  this.isMinimumOSSupported,
  this.requestHeadersProvider,
  UpdateDiagnosticsRecorder? diagnosticsRecorder,
  Future<void> Function(UpdateProblemReport report)? onProblemReport,
  FutureOr<void> Function(UpdateCleanupReport report)? onCleanupReport,
  bool skipInitialVersionCheck = false,
  ReleaseNotesLoader? releaseNotesLoader,
  Uri? releaseNotesUrl,
  ReleaseNotesFetcher? releaseNotesFetcher,
  ExternalUrlLauncher? externalUrlLauncher,
  bool? isWindows,
})  : expectedPackageId =
          _normalizeControllerExpectedPackageId(expectedPackageId),
      recoveryStore = recoveryStore,
      trustedReleasePublicKeys =
          normalizeReleasePublicKeys(trustedReleasePublicKeys),
      _isWindows = isWindows ?? Platform.isWindows,
      _localization = localization,
      _skipInitialVersionCheck = skipInitialVersionCheck,
      _diagnosticsRecorder =
          diagnosticsRecorder ?? UpdateDiagnosticsRecorder(channel: channel),
      _onProblemReport = onProblemReport,
      _onCleanupReport = onCleanupReport,
      _releaseNotesLoader = releaseNotesLoader,
      _releaseNotesUrl = releaseNotesUrl,
      _externalUrlLauncher =
          externalUrlLauncher ?? defaultExternalUrlLauncher,
      _releaseNotesFetcher = releaseNotesFetcher ??
          (releaseNotesUrl == null
              ? null
              : ReleaseNotesFetcher(
                  requestHeadersProvider: requestHeadersProvider,
                )) {
  if (appArchiveUrl != null) {
    init(appArchiveUrl);
  }
}