From bc7703f8867e296920413c2c46c2e678d2cd1b0a Mon Sep 17 00:00:00 2001 From: Andrew Kolos Date: Thu, 30 Jan 2025 10:09:19 -0800 Subject: [PATCH] remove more (simple) usage of package:usage (#162354) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Towards https://github.com/flutter/flutter/issues/150575. Tries to remove as much `Usage` as possible while avoiding more complicated bits that require more scrutiny to make sure we aren't losing test coverage or otherwise regressing. Said another way, almost the entire diff is just deleting code to send GA3 events, and the corresponding GA4 code can be found right next to it—making it easy to verify we aren't losing events/tests.
Pre-launch checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing.
[Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md --- .../lib/src/commands/build_web.dart | 1 - .../lib/src/commands/config.dart | 19 +- .../lib/src/commands/daemon.dart | 1 - .../lib/src/commands/packages.dart | 2 - .../flutter_tools/lib/src/commands/run.dart | 1 - .../flutter_tools/lib/src/context_runner.dart | 8 +- .../lib/src/drive/web_driver_service.dart | 1 - .../flutter_tools/lib/src/ios/xcodeproj.dart | 18 - .../lib/src/isolated/resident_web_runner.dart | 8 - .../lib/src/linux/build_linux.dart | 2 - .../lib/src/macos/build_macos.dart | 2 - .../lib/src/macos/cocoapods.dart | 5 - ...ramework_link_and_embedding_migration.dart | 10 - .../flutter_tools/lib/src/macos/xcdevice.dart | 2 - .../flutter_tools/lib/src/mdns_discovery.dart | 5 - packages/flutter_tools/lib/src/run_hot.dart | 21 +- .../lib/src/runner/flutter_command.dart | 8 - .../src/runner/flutter_command_runner.dart | 2 - .../flutter_tools/lib/src/web/compile.dart | 11 - .../flutter_tools/lib/src/web/web_runner.dart | 2 - .../lib/src/windows/build_windows.dart | 2 - .../commands.shard/hermetic/attach_test.dart | 9 - .../commands.shard/hermetic/config_test.dart | 51 +- .../test/general.shard/analytics_test.dart | 455 ------------------ .../test/general.shard/hot_test.dart | 1 - .../general.shard/ios/xcodeproj_test.dart | 6 - .../general.shard/macos/cocoapods_test.dart | 8 - .../macos/macos_project_migration_test.dart | 56 +-- .../general.shard/mdns_discovery_test.dart | 37 -- .../general.shard/resident_runner_test.dart | 92 +--- .../resident_web_runner_cold_test.dart | 6 - .../resident_web_runner_test.dart | 61 --- .../test/general.shard/run_hot_test.dart | 2 - .../runner/flutter_command_runner_test.dart | 5 - .../runner/flutter_command_test.dart | 164 +------ .../general.shard/web/compile_web_test.dart | 22 - 36 files changed, 29 insertions(+), 1077 deletions(-) delete mode 100644 packages/flutter_tools/test/general.shard/analytics_test.dart diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart index 5b5d5b8822..e669dc253f 100644 --- a/packages/flutter_tools/lib/src/commands/build_web.dart +++ b/packages/flutter_tools/lib/src/commands/build_web.dart @@ -247,7 +247,6 @@ class BuildWebCommand extends BuildSubCommand { buildSystem: globals.buildSystem, fileSystem: globals.fs, flutterVersion: globals.flutterVersion, - usage: globals.flutterUsage, analytics: globals.analytics, ); await webBuilder.buildWeb( diff --git a/packages/flutter_tools/lib/src/commands/config.dart b/packages/flutter_tools/lib/src/commands/config.dart index eaae119b6c..6270b5b356 100644 --- a/packages/flutter_tools/lib/src/commands/config.dart +++ b/packages/flutter_tools/lib/src/commands/config.dart @@ -9,7 +9,6 @@ import '../base/common.dart'; import '../convert.dart'; import '../features.dart'; import '../globals.dart' as globals; -import '../reporting/reporting.dart'; import '../runner/flutter_command.dart'; import '../runner/flutter_command_runner.dart'; @@ -137,22 +136,8 @@ class ConfigCommand extends FlutterCommand { if (argResults!.wasParsed('analytics')) { final bool value = boolArg('analytics'); - // The tool sends the analytics event *before* toggling the flag - // intentionally to be sure that opt-out events are sent correctly. - AnalyticsConfigEvent(enabled: value).send(); - if (!value) { - // Normally, the tool waits for the analytics to all send before the - // tool exits, but only when analytics are enabled. When reporting that - // analytics have been disable, the wait must be done here instead. - await globals.flutterUsage.ensureAnalyticsSent(); - } - globals.flutterUsage.enabled = value; globals.printStatus('Analytics reporting ${value ? 'enabled' : 'disabled'}.'); - // TODO(eliasyishak): Set the telemetry for the unified_analytics - // package as well, the above will be removed once we have - // fully transitioned to using the new package, - // https://github.com/flutter/flutter/issues/128251 await globals.analytics.setTelemetry(value); } @@ -273,9 +258,7 @@ class ConfigCommand extends FlutterCommand { /// List the status of the analytics reporting. String get analyticsUsage { - final bool analyticsEnabled = - globals.flutterUsage.enabled && !globals.flutterUsage.suppressAnalytics; - return 'Analytics reporting is currently ${analyticsEnabled ? 'enabled' : 'disabled'}.'; + return 'Analytics reporting is currently ${globals.analytics.telemetryEnabled ? 'enabled' : 'disabled'}.'; } /// Raising the reload tip for setting changes. diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index fbcf6a7f30..cbb0a37cac 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -709,7 +709,6 @@ class AppDomain extends Domain { stayResident: true, urlTunneller: options.webEnableExposeUrl! ? daemon.daemonDomain.exposeUrl : null, machine: machine, - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, logger: globals.logger, diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart index 11c159af97..e3e1daf9d5 100644 --- a/packages/flutter_tools/lib/src/commands/packages.dart +++ b/packages/flutter_tools/lib/src/commands/packages.dart @@ -348,7 +348,6 @@ class PackagesGetCommand extends FlutterCommand { touchesPackageConfig: !(isHelp || dryRun), ); final Duration elapsedDuration = timer.elapsed; - globals.flutterUsage.sendTiming('pub', 'get', elapsedDuration, label: 'success'); analytics.send( Event.timing( workflow: 'pub', @@ -361,7 +360,6 @@ class PackagesGetCommand extends FlutterCommand { } catch (_) { // ignore: avoid_catches_without_on_clauses final Duration elapsedDuration = timer.elapsed; - globals.flutterUsage.sendTiming('pub', 'get', elapsedDuration, label: 'failure'); analytics.send( Event.timing( workflow: 'pub', diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index b6bfe2676e..1f04678323 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -761,7 +761,6 @@ class RunCommand extends RunCommandBase { debuggingOptions: await createDebuggingOptions(webMode), stayResident: stayResident, fileSystem: globals.fs, - usage: globals.flutterUsage, analytics: globals.analytics, logger: globals.logger, systemClock: globals.systemClock, diff --git a/packages/flutter_tools/lib/src/context_runner.dart b/packages/flutter_tools/lib/src/context_runner.dart index 3e3d30b5f0..511c62cd4d 100644 --- a/packages/flutter_tools/lib/src/context_runner.dart +++ b/packages/flutter_tools/lib/src/context_runner.dart @@ -167,7 +167,6 @@ Future runInContext(FutureOr Function() runner, {Map? logger: globals.logger, platform: globals.platform, xcodeProjectInterpreter: globals.xcodeProjectInterpreter!, - usage: globals.flutterUsage, analytics: globals.analytics, ), CocoaPodsValidator: () => CocoaPodsValidator(globals.cocoaPods!, globals.userMessages), @@ -289,11 +288,7 @@ Future runInContext(FutureOr Function() runner, {Map? ), MacOSWorkflow: () => MacOSWorkflow(featureFlags: featureFlags, platform: globals.platform), MDnsVmServiceDiscovery: - () => MDnsVmServiceDiscovery( - logger: globals.logger, - flutterUsage: globals.flutterUsage, - analytics: globals.analytics, - ), + () => MDnsVmServiceDiscovery(logger: globals.logger, analytics: globals.analytics), OperatingSystemUtils: () => OperatingSystemUtils( fileSystem: globals.fs, @@ -384,7 +379,6 @@ Future runInContext(FutureOr Function() runner, {Map? processManager: globals.processManager, platform: globals.platform, fileSystem: globals.fs, - usage: globals.flutterUsage, analytics: globals.analytics, ), }, diff --git a/packages/flutter_tools/lib/src/drive/web_driver_service.dart b/packages/flutter_tools/lib/src/drive/web_driver_service.dart index 2ae8fd4038..94d02bf408 100644 --- a/packages/flutter_tools/lib/src/drive/web_driver_service.dart +++ b/packages/flutter_tools/lib/src/drive/web_driver_service.dart @@ -97,7 +97,6 @@ class WebDriverService extends DriverService { stayResident: true, flutterProject: FlutterProject.current(), fileSystem: globals.fs, - usage: globals.flutterUsage, analytics: globals.analytics, logger: _logger, systemClock: globals.systemClock, diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart index d2a2e75039..1882ca227a 100644 --- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart @@ -30,7 +30,6 @@ class XcodeProjectInterpreter { required ProcessManager processManager, required Logger logger, required FileSystem fileSystem, - required Usage usage, required Analytics analytics, }) { return XcodeProjectInterpreter._( @@ -38,7 +37,6 @@ class XcodeProjectInterpreter { processManager: processManager, logger: logger, fileSystem: fileSystem, - usage: usage, analytics: analytics, ); } @@ -48,7 +46,6 @@ class XcodeProjectInterpreter { required ProcessManager processManager, required Logger logger, required FileSystem fileSystem, - required Usage usage, required Analytics analytics, Version? version, String? build, @@ -65,7 +62,6 @@ class XcodeProjectInterpreter { _version = version, _build = build, _versionText = version?.toString(), - _usage = usage, _analytics = analytics; /// Create an [XcodeProjectInterpreter] for testing. @@ -88,7 +84,6 @@ class XcodeProjectInterpreter { fileSystem: MemoryFileSystem.test(), platform: platform, processManager: processManager, - usage: TestUsage(), logger: BufferLogger.test(), version: version, build: build, @@ -101,7 +96,6 @@ class XcodeProjectInterpreter { final ProcessUtils _processUtils; final OperatingSystemUtils _operatingSystemUtils; final Logger _logger; - final Usage _usage; final Analytics _analytics; static final RegExp _versionRegex = RegExp(r'Xcode ([0-9.]+).*Build version (\w+)'); @@ -243,12 +237,6 @@ class XcodeProjectInterpreter { XcodeSdk.IPhoneOS || XcodeSdk.IPhoneSimulator => 'ios', XcodeSdk.WatchOS || XcodeSdk.WatchSimulator => 'watchos', }; - BuildEvent( - 'xcode-show-build-settings-timeout', - type: eventType, - command: showBuildSettingsCommand.join(' '), - flutterUsage: _usage, - ).send(); _analytics.send( Event.flutterBuildInfo( label: 'xcode-show-build-settings-timeout', @@ -306,12 +294,6 @@ class XcodeProjectInterpreter { return result.stdout.trim(); } on Exception catch (error) { if (error is ProcessException && error.toString().contains('timed out')) { - BuildEvent( - 'xcode-show-build-settings-timeout', - type: 'ios', - command: showBuildSettingsCommand.join(' '), - flutterUsage: _usage, - ).send(); _analytics.send( Event.flutterBuildInfo( label: 'xcode-show-build-settings-timeout', diff --git a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart index 4bfc34190a..a1c7faf23a 100644 --- a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart +++ b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart @@ -54,7 +54,6 @@ class DwdsWebRunnerFactory extends WebRunnerFactory { required Logger logger, required FileSystem fileSystem, required SystemClock systemClock, - required Usage usage, required Analytics analytics, bool machine = false, }) { @@ -66,7 +65,6 @@ class DwdsWebRunnerFactory extends WebRunnerFactory { stayResident: stayResident, urlTunneller: urlTunneller, machine: machine, - usage: usage, analytics: analytics, systemClock: systemClock, fileSystem: fileSystem, @@ -91,7 +89,6 @@ class ResidentWebRunner extends ResidentRunner { required FileSystem fileSystem, required Logger logger, required SystemClock systemClock, - required Usage usage, required Analytics analytics, UrlTunneller? urlTunneller, // TODO(bkonyi): remove when ready to serve DevTools from DDS. @@ -99,7 +96,6 @@ class ResidentWebRunner extends ResidentRunner { }) : _fileSystem = fileSystem, _logger = logger, _systemClock = systemClock, - _usage = usage, _analytics = analytics, _urlTunneller = urlTunneller, super( @@ -114,7 +110,6 @@ class ResidentWebRunner extends ResidentRunner { final FileSystem _fileSystem; final Logger _logger; final SystemClock _systemClock; - final Usage _usage; final Analytics _analytics; final UrlTunneller? _urlTunneller; @@ -342,7 +337,6 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive). buildSystem: globals.buildSystem, fileSystem: _fileSystem, flutterVersion: globals.flutterVersion, - usage: globals.flutterUsage, analytics: globals.analytics, ); await webBuilder.buildWeb( @@ -436,7 +430,6 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive). buildSystem: globals.buildSystem, fileSystem: _fileSystem, flutterVersion: globals.flutterVersion, - usage: globals.flutterUsage, analytics: globals.analytics, ); await webBuilder.buildWeb( @@ -480,7 +473,6 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive). // Don't track restart times for dart2js builds or web-server devices. if (debuggingOptions.buildInfo.isDebug && deviceIsDebuggable) { - _usage.sendTiming('hot', 'web-incremental-restart', elapsed); _analytics.send( Event.timing( workflow: 'hot', diff --git a/packages/flutter_tools/lib/src/linux/build_linux.dart b/packages/flutter_tools/lib/src/linux/build_linux.dart index 1445ed03ab..71d89f004f 100644 --- a/packages/flutter_tools/lib/src/linux/build_linux.dart +++ b/packages/flutter_tools/lib/src/linux/build_linux.dart @@ -185,7 +185,6 @@ Future _runCmake( throwToolExit('Unable to generate build files'); } final Duration elapsedDuration = sw.elapsed; - globals.flutterUsage.sendTiming('build', 'cmake-linux', elapsedDuration); globals.analytics.send( Event.timing( workflow: 'build', @@ -216,7 +215,6 @@ Future _runBuild(Directory buildDir) async { throwToolExit('Build process failed'); } final Duration elapsedDuration = sw.elapsed; - globals.flutterUsage.sendTiming('build', 'linux-ninja', elapsedDuration); globals.analytics.send( Event.timing( workflow: 'build', diff --git a/packages/flutter_tools/lib/src/macos/build_macos.dart b/packages/flutter_tools/lib/src/macos/build_macos.dart index 927bf28711..6413faead7 100644 --- a/packages/flutter_tools/lib/src/macos/build_macos.dart +++ b/packages/flutter_tools/lib/src/macos/build_macos.dart @@ -85,7 +85,6 @@ Future buildMacOS({ RemoveMacOSFrameworkLinkAndEmbeddingMigration( flutterProject.macos, globals.logger, - globals.flutterUsage, globals.analytics, ), MacOSDeploymentTargetMigration(flutterProject.macos, globals.logger), @@ -246,7 +245,6 @@ Future buildMacOS({ } await _writeCodeSizeAnalysis(buildInfo, sizeAnalyzer); final Duration elapsedDuration = sw.elapsed; - globals.flutterUsage.sendTiming('build', 'xcode-macos', elapsedDuration); globals.analytics.send( Event.timing( workflow: 'build', diff --git a/packages/flutter_tools/lib/src/macos/cocoapods.dart b/packages/flutter_tools/lib/src/macos/cocoapods.dart index 5bff8ebd0b..ea48ba2b58 100644 --- a/packages/flutter_tools/lib/src/macos/cocoapods.dart +++ b/packages/flutter_tools/lib/src/macos/cocoapods.dart @@ -22,7 +22,6 @@ import '../ios/xcodeproj.dart'; import '../migrations/cocoapods_script_symlink.dart'; import '../migrations/cocoapods_toolchain_directory_migration.dart'; import '../project.dart'; -import '../reporting/reporting.dart'; const String noCocoaPodsConsequence = ''' CocoaPods is a package manager for iOS or macOS platform code. @@ -100,13 +99,11 @@ class CocoaPods { required XcodeProjectInterpreter xcodeProjectInterpreter, required Logger logger, required Platform platform, - required Usage usage, required Analytics analytics, }) : _fileSystem = fileSystem, _processManager = processManager, _xcodeProjectInterpreter = xcodeProjectInterpreter, _logger = logger, - _usage = usage, _analytics = analytics, _processUtils = ProcessUtils(processManager: processManager, logger: logger), _operatingSystemUtils = OperatingSystemUtils( @@ -122,7 +119,6 @@ class CocoaPods { final OperatingSystemUtils _operatingSystemUtils; final XcodeProjectInterpreter _xcodeProjectInterpreter; final Logger _logger; - final Usage _usage; final Analytics _analytics; Future? _versionText; @@ -403,7 +399,6 @@ class CocoaPods { } else if ((_isFfiX86Error(stdout) || _isFfiX86Error(stderr)) && _operatingSystemUtils.hostPlatform == HostPlatform.darwin_arm64) { // https://github.com/flutter/flutter/issues/70796 - UsageEvent('pod-install-failure', 'arm-ffi', flutterUsage: _usage).send(); _analytics.send(Event.appleUsageEvent(workflow: 'pod-install-failure', parameter: 'arm-ffi')); _logger.printError( 'Error: To set up CocoaPods for ARM macOS, run:\n' diff --git a/packages/flutter_tools/lib/src/macos/migrations/remove_macos_framework_link_and_embedding_migration.dart b/packages/flutter_tools/lib/src/macos/migrations/remove_macos_framework_link_and_embedding_migration.dart index 4a57e81e83..23e5d2a9df 100644 --- a/packages/flutter_tools/lib/src/macos/migrations/remove_macos_framework_link_and_embedding_migration.dart +++ b/packages/flutter_tools/lib/src/macos/migrations/remove_macos_framework_link_and_embedding_migration.dart @@ -7,7 +7,6 @@ import 'package:unified_analytics/unified_analytics.dart'; import '../../base/common.dart'; import '../../base/file_system.dart'; import '../../base/project_migrator.dart'; -import '../../reporting/reporting.dart'; import '../../xcode_project.dart'; // Remove the linking and embedding logic from the Xcode project to give the tool more control over these. @@ -15,14 +14,11 @@ class RemoveMacOSFrameworkLinkAndEmbeddingMigration extends ProjectMigrator { RemoveMacOSFrameworkLinkAndEmbeddingMigration( MacOSProject project, super.logger, - Usage usage, Analytics analytics, ) : _xcodeProjectInfoFile = project.xcodeProjectInfoFile, - _usage = usage, _analytics = analytics; final File _xcodeProjectInfoFile; - final Usage _usage; final Analytics _analytics; @override @@ -91,12 +87,6 @@ class RemoveMacOSFrameworkLinkAndEmbeddingMigration extends ProjectMigrator { } if (line.contains('/* App.framework ') || line.contains('/* FlutterMacOS.framework ')) { - UsageEvent( - 'macos-migration', - 'remove-frameworks', - label: 'failure', - flutterUsage: _usage, - ).send(); _analytics.send( Event.appleUsageEvent( workflow: 'macos-migration', diff --git a/packages/flutter_tools/lib/src/macos/xcdevice.dart b/packages/flutter_tools/lib/src/macos/xcdevice.dart index 9849df5d44..ee5faec289 100644 --- a/packages/flutter_tools/lib/src/macos/xcdevice.dart +++ b/packages/flutter_tools/lib/src/macos/xcdevice.dart @@ -26,7 +26,6 @@ import '../ios/ios_deploy.dart'; import '../ios/iproxy.dart'; import '../ios/mac.dart'; import '../ios/xcode_debug.dart'; -import '../reporting/reporting.dart'; import 'xcode.dart'; class XCDeviceEventNotification { @@ -520,7 +519,6 @@ class XCDevice { final String? errorMessage = _parseErrorMessage(errorProperties); if (errorMessage != null) { if (errorMessage.contains('not paired')) { - UsageEvent('device', 'ios-trust-failure', flutterUsage: globals.flutterUsage).send(); _analytics.send( Event.appleUsageEvent(workflow: 'device', parameter: 'ios-trust-failure'), ); diff --git a/packages/flutter_tools/lib/src/mdns_discovery.dart b/packages/flutter_tools/lib/src/mdns_discovery.dart index ea9b82a1ea..5d2d331f3c 100644 --- a/packages/flutter_tools/lib/src/mdns_discovery.dart +++ b/packages/flutter_tools/lib/src/mdns_discovery.dart @@ -16,7 +16,6 @@ import 'build_info.dart'; import 'convert.dart'; import 'device.dart'; import 'globals.dart' as globals; -import 'reporting/reporting.dart'; /// A wrapper around [MDnsClient] to find a Dart VM Service instance. class MDnsVmServiceDiscovery { @@ -27,12 +26,10 @@ class MDnsVmServiceDiscovery { MDnsClient? mdnsClient, MDnsClient? preliminaryMDnsClient, required Logger logger, - required Usage flutterUsage, required Analytics analytics, }) : _client = mdnsClient ?? MDnsClient(), _preliminaryClient = preliminaryMDnsClient, _logger = logger, - _flutterUsage = flutterUsage, _analytics = analytics; final MDnsClient _client; @@ -42,7 +39,6 @@ class MDnsVmServiceDiscovery { final MDnsClient? _preliminaryClient; final Logger _logger; - final Usage _flutterUsage; final Analytics _analytics; @visibleForTesting @@ -575,7 +571,6 @@ class MDnsVmServiceDiscovery { final TargetPlatform targetPlatform = await device.targetPlatform; switch (targetPlatform) { case TargetPlatform.ios: - UsageEvent('ios-mdns', 'no-ipv4-link-local', flutterUsage: _flutterUsage).send(); _analytics.send( Event.appleUsageEvent(workflow: 'ios-mdns', parameter: 'no-ipv4-link-local'), ); diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index 011c6e5d73..b1b8df1b09 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -716,7 +716,6 @@ class HotRunner extends ResidentRunner { // Send timing analytics. final Duration elapsedDuration = restartTimer.elapsed; - globals.flutterUsage.sendTiming('hot', 'restart', elapsedDuration); _analytics.send( Event.timing( workflow: 'hot', @@ -1046,7 +1045,6 @@ class HotRunner extends ResidentRunner { sdkName, emulator, reason, - globals.flutterUsage, globals.analytics, ); if (result.code != 0) { @@ -1145,7 +1143,6 @@ class HotRunner extends ResidentRunner { if ((reassembleResult.reassembleViews.length == 1) && !reassembleResult.failedReassemble && shouldReportReloadTime) { - globals.flutterUsage.sendTiming('hot', 'reload', reloadDuration); _analytics.send( Event.timing( workflow: 'hot', @@ -1298,7 +1295,6 @@ typedef ReloadSourcesHelper = String? sdkName, bool? emulator, String? reason, - Usage usage, Analytics analytics, ); @@ -1312,7 +1308,6 @@ Future defaultReloadSourcesHelper( String? sdkName, bool? emulator, String? reason, - Usage usage, Analytics analytics, ) async { final Stopwatch vmReloadTimer = Stopwatch()..start(); @@ -1348,22 +1343,12 @@ Future defaultReloadSourcesHelper( (await Future.wait(allReportsFutures)).whereType(); final vm_service.ReloadReport? reloadReport = reports.isEmpty ? null : reports.first.reports[0]; if (reloadReport == null || !HotRunner.validateReloadReport(reloadReport)) { - // Reload failed. - HotEvent( - 'reload-reject', - targetPlatform: targetPlatform!, - sdkName: sdkName!, - emulator: emulator!, - fullRestart: false, - reason: reason, - usage: usage, - ).send(); analytics.send( Event.hotRunnerInfo( label: 'reload-reject', - targetPlatform: targetPlatform, - sdkName: sdkName, - emulator: emulator, + targetPlatform: targetPlatform!, + sdkName: sdkName!, + emulator: emulator!, fullRestart: false, reason: reason, ), diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index fe638c3b7a..87511ef045 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -1805,14 +1805,6 @@ abstract class FlutterCommand extends Command { final Duration elapsedDuration = (commandResult.endTimeOverride ?? endTime).difference( startTime, ); - globals.flutterUsage.sendTiming( - 'flutter', - name, - elapsedDuration, - // Report in the form of `success-[parameter1-parameter2]`, all of which - // can be null if the command doesn't provide a FlutterCommandResult. - label: label == '' ? null : label, - ); analytics.send( Event.timing( workflow: 'flutter', diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart index a1104da9ce..158550c7cd 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart @@ -440,7 +440,6 @@ class FlutterCommandRunner extends CommandRunner { } if ((topLevelResults[FlutterGlobalOptions.kSuppressAnalyticsFlag] as bool?) ?? false) { - globals.flutterUsage.suppressAnalytics = true; globals.analytics.suppressTelemetry(); } @@ -459,7 +458,6 @@ class FlutterCommandRunner extends CommandRunner { } if ((topLevelResults[FlutterGlobalOptions.kVersionFlag] as bool?) ?? false) { - globals.flutterUsage.sendCommand(FlutterGlobalOptions.kVersionFlag); globals.analytics.send( Event.flutterCommandResult( commandPath: 'version', diff --git a/packages/flutter_tools/lib/src/web/compile.dart b/packages/flutter_tools/lib/src/web/compile.dart index f14e3c5564..c12159c079 100644 --- a/packages/flutter_tools/lib/src/web/compile.dart +++ b/packages/flutter_tools/lib/src/web/compile.dart @@ -19,7 +19,6 @@ import '../globals.dart' as globals; import '../platform_plugins.dart'; import '../plugins.dart'; import '../project.dart'; -import '../reporting/reporting.dart'; import '../version.dart'; import 'compiler_config.dart'; import 'file_generators/flutter_service_worker_js.dart'; @@ -41,14 +40,12 @@ class WebBuilder { required Logger logger, required ProcessManager processManager, required BuildSystem buildSystem, - required Usage usage, required Analytics analytics, required FlutterVersion flutterVersion, required FileSystem fileSystem, }) : _logger = logger, _processManager = processManager, _buildSystem = buildSystem, - _flutterUsage = usage, _analytics = analytics, _flutterVersion = flutterVersion, _fileSystem = fileSystem; @@ -56,7 +53,6 @@ class WebBuilder { final Logger _logger; final ProcessManager _processManager; final BuildSystem _buildSystem; - final Usage _flutterUsage; final Analytics _analytics; final FlutterVersion _flutterVersion; final FileSystem _fileSystem; @@ -146,19 +142,12 @@ class WebBuilder { final String buildSettingsString = _buildEventAnalyticsSettings(configs: compilerConfigs); - BuildEvent( - 'web-compile', - type: 'web', - settings: buildSettingsString, - flutterUsage: _flutterUsage, - ).send(); _analytics.send( Event.flutterBuildInfo(label: 'web-compile', buildType: 'web', settings: buildSettingsString), ); final Duration elapsedDuration = sw.elapsed; final String variableName = compilerConfigs.length > 1 ? 'dual-compile' : 'dart2js'; - _flutterUsage.sendTiming('build', variableName, elapsedDuration); _analytics.send( Event.timing( workflow: 'build', diff --git a/packages/flutter_tools/lib/src/web/web_runner.dart b/packages/flutter_tools/lib/src/web/web_runner.dart index af7424a3b7..cd22c83c24 100644 --- a/packages/flutter_tools/lib/src/web/web_runner.dart +++ b/packages/flutter_tools/lib/src/web/web_runner.dart @@ -11,7 +11,6 @@ import '../base/net.dart'; import '../base/time.dart'; import '../device.dart'; import '../project.dart'; -import '../reporting/reporting.dart'; import '../resident_runner.dart'; WebRunnerFactory? get webRunnerFactory => context.get(); @@ -31,7 +30,6 @@ abstract class WebRunnerFactory { required Logger logger, required FileSystem fileSystem, required SystemClock systemClock, - required Usage usage, required Analytics analytics, bool machine = false, }); diff --git a/packages/flutter_tools/lib/src/windows/build_windows.dart b/packages/flutter_tools/lib/src/windows/build_windows.dart index dd415628e9..bc6161c33e 100644 --- a/packages/flutter_tools/lib/src/windows/build_windows.dart +++ b/packages/flutter_tools/lib/src/windows/build_windows.dart @@ -205,7 +205,6 @@ Future _runCmakeGeneration({ throwToolExit('Unable to generate build files'); } final Duration elapsedDuration = sw.elapsed; - globals.flutterUsage.sendTiming('build', 'windows-cmake-generation', elapsedDuration); globals.analytics.send( Event.timing( workflow: 'build', @@ -259,7 +258,6 @@ Future _runBuild( throwToolExit('Build process failed.'); } final Duration elapsedDuration = sw.elapsed; - globals.flutterUsage.sendTiming('build', 'windows-cmake-build', elapsedDuration); globals.analytics.send( Event.timing( workflow: 'build', diff --git a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart index 12d2e66e61..b01032afe6 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart @@ -28,7 +28,6 @@ import 'package:flutter_tools/src/ios/devices.dart'; import 'package:flutter_tools/src/macos/macos_ipad_device.dart'; import 'package:flutter_tools/src/mdns_discovery.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/run_hot.dart'; import 'package:multicast_dns/multicast_dns.dart'; @@ -179,7 +178,6 @@ void main() { >{}, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), }, @@ -260,7 +258,6 @@ void main() { >{}, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), Signals: () => FakeSignals(), @@ -356,7 +353,6 @@ void main() { >{}, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), ProcessManager: () => FakeProcessManager.empty(), @@ -447,7 +443,6 @@ void main() { }, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), }, @@ -540,7 +535,6 @@ void main() { }, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), }, @@ -646,7 +640,6 @@ void main() { }, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), }, @@ -752,7 +745,6 @@ void main() { }, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), }, @@ -1016,7 +1008,6 @@ void main() { >{}, ), logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ), }, diff --git a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart index 094f84ca1c..85029f9c05 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart @@ -228,71 +228,38 @@ void main() { ); testUsingContext( - 'no-analytics flag flips usage flag and sends event', + 'analytics flag enables/disables analytics', () async { final ConfigCommand configCommand = ConfigCommand(); final CommandRunner commandRunner = createTestCommandRunner(configCommand); - expect(testUsage.enabled, true); + expect(fakeAnalytics.telemetryEnabled, true); + await commandRunner.run(['config', '--no-analytics']); - - expect(testUsage.enabled, false); - - // Verify that we flushed the analytics queue. - expect(testUsage.ensureAnalyticsSentCalls, 1); - - // Verify that we only send the analytics disable event, and no other - // info. - expect( - testUsage.events, - equals([const TestUsageEvent('analytics', 'enabled', label: 'false')]), - ); - expect(testUsage.commands, isEmpty); - expect(testUsage.timings, isEmpty); - expect(fakeAnalytics.sentEvents, isEmpty); - }, - overrides: {Usage: () => testUsage}, - ); - - testUsingContext( - 'analytics flag flips usage flag and sends event', - () async { - final ConfigCommand configCommand = ConfigCommand(); - final CommandRunner commandRunner = createTestCommandRunner(configCommand); + expect(fakeAnalytics.telemetryEnabled, false); await commandRunner.run(['config', '--analytics']); - - expect(testUsage.enabled, true); - - // Verify that we only send the analytics enable event, and no other - // info. - expect( - testUsage.events, - equals([const TestUsageEvent('analytics', 'enabled', label: 'true')]), - ); - expect(testUsage.commands, isEmpty); - expect(testUsage.timings, isEmpty); - expect(fakeAnalytics.sentEvents, isEmpty); + expect(fakeAnalytics.telemetryEnabled, true); }, - overrides: {Usage: () => testUsage}, + overrides: {Analytics: () => fakeAnalytics}, ); testUsingContext('analytics reported with help usages', () async { final ConfigCommand configCommand = ConfigCommand(); createTestCommandRunner(configCommand); - testUsage.suppressAnalytics = true; + await fakeAnalytics.setTelemetry(false); expect( configCommand.usage, containsIgnoringWhitespace('Analytics reporting is currently disabled'), ); - testUsage.suppressAnalytics = false; + await fakeAnalytics.setTelemetry(true); expect( configCommand.usage, containsIgnoringWhitespace('Analytics reporting is currently enabled'), ); - }, overrides: {Usage: () => testUsage}); + }, overrides: {Analytics: () => fakeAnalytics}); }); } diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart deleted file mode 100644 index c4cbe3d6fd..0000000000 --- a/packages/flutter_tools/test/general.shard/analytics_test.dart +++ /dev/null @@ -1,455 +0,0 @@ -// Copyright 2014 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:args/command_runner.dart'; -import 'package:file/memory.dart'; -import 'package:flutter_tools/src/android/android_studio.dart'; -import 'package:flutter_tools/src/android/android_workflow.dart'; -import 'package:flutter_tools/src/artifacts.dart'; -import 'package:flutter_tools/src/base/config.dart'; -import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/io.dart'; -import 'package:flutter_tools/src/base/logger.dart'; -import 'package:flutter_tools/src/base/platform.dart'; -import 'package:flutter_tools/src/base/process.dart'; -import 'package:flutter_tools/src/base/time.dart'; -import 'package:flutter_tools/src/build_system/build_system.dart'; -import 'package:flutter_tools/src/cache.dart'; -import 'package:flutter_tools/src/commands/build.dart'; -import 'package:flutter_tools/src/commands/config.dart'; -import 'package:flutter_tools/src/commands/doctor.dart'; -import 'package:flutter_tools/src/doctor.dart'; -import 'package:flutter_tools/src/doctor_validator.dart'; -import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; -import 'package:flutter_tools/src/reporting/reporting.dart'; -import 'package:flutter_tools/src/runner/flutter_command.dart'; -import 'package:flutter_tools/src/version.dart'; -import 'package:test/fake.dart'; -import 'package:usage/usage_io.dart'; - -import '../src/common.dart'; -import '../src/context.dart'; -import '../src/fakes.dart'; -import '../src/test_build_system.dart'; -import '../src/test_flutter_command_runner.dart'; - -void main() { - setUpAll(() { - Cache.disableLocking(); - }); - - group('analytics', () { - late Directory tempDir; - late Config testConfig; - late FileSystem fs; - - const String flutterRoot = '/path/to/flutter'; - - setUp(() { - Cache.flutterRoot = flutterRoot; - tempDir = globals.fs.systemTempDirectory.createTempSync('flutter_tools_analytics_test.'); - testConfig = Config.test(); - fs = MemoryFileSystem.test(); - }); - - tearDown(() { - tryToDelete(tempDir); - }); - - // Ensure we don't send anything when analytics is disabled. - testUsingContext( - "doesn't send when disabled", - () async { - int count = 0; - globals.flutterUsage.onSend.listen((Map data) => count++); - - final FlutterCommand command = FakeFlutterCommand(); - final CommandRunner runner = createTestCommandRunner(command); - - globals.flutterUsage.enabled = false; - await runner.run(['fake']); - expect(count, 0); - - globals.flutterUsage.enabled = true; - await runner.run(['fake']); - // LogToFileAnalytics isFirstRun is hardcoded to false - // so this usage will never act like the first run - // (which would not send usage). - expect(count, 4); - - count = 0; - globals.flutterUsage.enabled = false; - await runner.run(['fake']); - - expect(count, 0); - }, - overrides: { - FlutterVersion: () => FakeFlutterVersion(), - Usage: - () => Usage( - configDirOverride: tempDir.path, - logFile: tempDir.childFile('analytics.log').path, - runningOnBot: true, - ), - }, - ); - - // Ensure we don't send for the 'flutter config' command. - testUsingContext( - "config doesn't send", - () async { - int count = 0; - globals.flutterUsage.onSend.listen((Map data) => count++); - - globals.flutterUsage.enabled = false; - final ConfigCommand command = ConfigCommand(); - final CommandRunner runner = createTestCommandRunner(command); - await runner.run(['config']); - expect(count, 0); - - globals.flutterUsage.enabled = true; - await runner.run(['config']); - - expect(count, 0); - }, - overrides: { - FlutterVersion: () => FakeFlutterVersion(), - Usage: - () => Usage( - configDirOverride: tempDir.path, - logFile: tempDir.childFile('analytics.log').path, - runningOnBot: true, - ), - }, - ); - - testUsingContext( - 'Usage records one feature in experiment setting', - () async { - testConfig.setValue(flutterWebFeature.configSetting!, true); - final Usage usage = Usage(runningOnBot: true); - usage.sendCommand('test'); - - final String featuresKey = CustomDimensionsEnum.enabledFlutterFeatures.cdKey; - - expect(globals.fs.file('test').readAsStringSync(), contains('$featuresKey: enable-web')); - }, - overrides: { - FlutterVersion: () => FakeFlutterVersion(), - Config: () => testConfig, - Platform: - () => FakePlatform(environment: {'FLUTTER_ANALYTICS_LOG_FILE': 'test'}), - FileSystem: () => fs, - ProcessManager: () => FakeProcessManager.any(), - }, - ); - - testUsingContext( - 'Usage records multiple features in experiment setting', - () async { - testConfig.setValue(flutterWebFeature.configSetting!, true); - testConfig.setValue(flutterLinuxDesktopFeature.configSetting!, true); - testConfig.setValue(flutterMacOSDesktopFeature.configSetting!, true); - final Usage usage = Usage(runningOnBot: true); - usage.sendCommand('test'); - - final String featuresKey = CustomDimensionsEnum.enabledFlutterFeatures.cdKey; - - expect( - globals.fs.file('test').readAsStringSync(), - contains('$featuresKey: enable-web,enable-linux-desktop,enable-macos-desktop'), - ); - }, - overrides: { - FlutterVersion: () => FakeFlutterVersion(), - Config: () => testConfig, - Platform: - () => FakePlatform(environment: {'FLUTTER_ANALYTICS_LOG_FILE': 'test'}), - FileSystem: () => fs, - ProcessManager: () => FakeProcessManager.any(), - }, - ); - }); - - group('analytics with fakes', () { - late MemoryFileSystem memoryFileSystem; - late FakeStdio fakeStdio; - late TestUsage testUsage; - late FakeClock fakeClock; - late FakeDoctor doctor; - late FakeAndroidStudio androidStudio; - late ProcessManager processManager; - late BufferLogger logger; - late ProcessUtils processUtils; - - setUp(() { - memoryFileSystem = MemoryFileSystem.test(); - fakeStdio = FakeStdio(); - testUsage = TestUsage(); - fakeClock = FakeClock(); - doctor = FakeDoctor(); - androidStudio = FakeAndroidStudio(); - processManager = FakeProcessManager.empty(); - logger = BufferLogger.test(); - processUtils = ProcessUtils(logger: logger, processManager: processManager); - }); - - testUsingContext( - 'flutter commands send timing events', - () async { - fakeClock.times = [1000, 2000]; - doctor.diagnoseSucceeds = true; - final DoctorCommand command = DoctorCommand(); - final CommandRunner runner = createTestCommandRunner(command); - await runner.run(['doctor']); - - expect( - testUsage.timings, - contains( - const TestTimingEvent( - 'flutter', - 'doctor', - Duration(milliseconds: 1000), - label: 'success', - ), - ), - ); - }, - overrides: { - AndroidStudio: () => androidStudio, - SystemClock: () => fakeClock, - Doctor: () => doctor, - Usage: () => testUsage, - }, - ); - - testUsingContext( - 'doctor fail sends warning', - () async { - fakeClock.times = [1000, 2000]; - doctor.diagnoseSucceeds = false; - final DoctorCommand command = DoctorCommand(); - final CommandRunner runner = createTestCommandRunner(command); - await runner.run(['doctor']); - - expect( - testUsage.timings, - contains( - const TestTimingEvent( - 'flutter', - 'doctor', - Duration(milliseconds: 1000), - label: 'warning', - ), - ), - ); - }, - overrides: { - AndroidStudio: () => androidStudio, - SystemClock: () => fakeClock, - Doctor: () => doctor, - Usage: () => testUsage, - }, - ); - - testUsingContext('single command usage path', () async { - final FlutterCommand doctorCommand = DoctorCommand(); - - expect(await doctorCommand.usagePath, 'doctor'); - }, overrides: {Usage: () => testUsage}); - - testUsingContext('compound command usage path', () async { - final BuildCommand buildCommand = BuildCommand( - artifacts: Artifacts.test(fileSystem: memoryFileSystem), - androidSdk: FakeAndroidSdk(), - buildSystem: TestBuildSystem.all(BuildResult(success: true)), - fileSystem: memoryFileSystem, - logger: logger, - processUtils: processUtils, - osUtils: FakeOperatingSystemUtils(), - ); - final FlutterCommand buildApkCommand = buildCommand.subcommands['apk']! as FlutterCommand; - - expect(await buildApkCommand.usagePath, 'build/apk'); - }); - - testUsingContext( - 'command sends localtime', - () async { - const int kMillis = 1000; - fakeClock.times = [kMillis]; - // Since FLUTTER_ANALYTICS_LOG_FILE is set in the environment, analytics - // will be written to a file. - final Usage usage = Usage(versionOverride: 'test', runningOnBot: true); - usage.suppressAnalytics = false; - usage.enabled = true; - - usage.sendCommand('test'); - - final String log = globals.fs.file('analytics.log').readAsStringSync(); - final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(kMillis); - - expect(log.contains(formatDateTime(dateTime)), isTrue); - }, - overrides: { - FileSystem: () => memoryFileSystem, - ProcessManager: () => processManager, - SystemClock: () => fakeClock, - Platform: - () => FakePlatform( - environment: {'FLUTTER_ANALYTICS_LOG_FILE': 'analytics.log'}, - ), - Stdio: () => fakeStdio, - }, - ); - - testUsingContext( - 'event sends localtime', - () async { - const int kMillis = 1000; - fakeClock.times = [kMillis]; - // Since FLUTTER_ANALYTICS_LOG_FILE is set in the environment, analytics - // will be written to a file. - final Usage usage = Usage(versionOverride: 'test', runningOnBot: true); - usage.suppressAnalytics = false; - usage.enabled = true; - - usage.sendEvent('test', 'test'); - - final String log = globals.fs.file('analytics.log').readAsStringSync(); - final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(kMillis); - - expect(log.contains(formatDateTime(dateTime)), isTrue); - }, - overrides: { - FileSystem: () => memoryFileSystem, - ProcessManager: () => processManager, - SystemClock: () => fakeClock, - Platform: - () => FakePlatform( - environment: {'FLUTTER_ANALYTICS_LOG_FILE': 'analytics.log'}, - ), - Stdio: () => fakeStdio, - }, - ); - }); - - group('analytics bots', () { - late Directory tempDir; - - setUp(() { - tempDir = globals.fs.systemTempDirectory.createTempSync('flutter_tools_analytics_bots_test.'); - }); - - tearDown(() { - tryToDelete(tempDir); - }); - - testUsingContext( - "don't send on bots with unknown version", - () async { - int count = 0; - globals.flutterUsage.onSend.listen((Map data) => count++); - await createTestCommandRunner().run(['--version']); - - expect(count, 0); - }, - overrides: { - Usage: - () => Usage( - settingsName: 'flutter_bot_test', - versionOverride: 'dev/unknown', - configDirOverride: tempDir.path, - runningOnBot: false, - ), - }, - ); - - testUsingContext( - "don't send on bots even when opted in", - () async { - int count = 0; - globals.flutterUsage.onSend.listen((Map data) => count++); - globals.flutterUsage.enabled = true; - await createTestCommandRunner().run(['--version']); - - expect(count, 0); - }, - overrides: { - Usage: - () => Usage( - settingsName: 'flutter_bot_test', - versionOverride: 'dev/unknown', - configDirOverride: tempDir.path, - runningOnBot: false, - ), - }, - ); - - testUsingContext('Uses AnalyticsMock when .flutter cannot be created', () async { - final Usage usage = Usage( - settingsName: 'flutter_bot_test', - versionOverride: 'dev/known', - configDirOverride: tempDir.path, - analyticsIOFactory: throwingAnalyticsIOFactory, - runningOnBot: false, - ); - final AnalyticsMock analyticsMock = AnalyticsMock(); - - expect(usage.clientId, analyticsMock.clientId); - expect(usage.suppressAnalytics, isTrue); - }); - }); -} - -Analytics throwingAnalyticsIOFactory( - String trackingId, - String applicationName, - String applicationVersion, { - String? analyticsUrl, - Directory? documentDirectory, -}) { - throw const FileSystemException('Could not create file'); -} - -class FakeFlutterCommand extends FlutterCommand { - @override - String get description => 'A fake command'; - - @override - String get name => 'fake'; - - @override - Future runCommand() async { - return FlutterCommandResult.success(); - } -} - -class FakeDoctor extends Fake implements Doctor { - bool diagnoseSucceeds = false; - - @override - Future diagnose({ - bool androidLicenses = false, - bool verbose = true, - bool showColor = true, - AndroidLicenseValidator? androidLicenseValidator, - bool showPii = true, - List? startedValidatorTasks, - bool sendEvent = true, - FlutterVersion? version, - }) async { - return diagnoseSucceeds; - } -} - -class FakeClock extends Fake implements SystemClock { - List times = []; - - @override - DateTime now() { - return DateTime.fromMillisecondsSinceEpoch(times.removeAt(0)); - } -} diff --git a/packages/flutter_tools/test/general.shard/hot_test.dart b/packages/flutter_tools/test/general.shard/hot_test.dart index 33a8ee1c2a..ccfa169dbf 100644 --- a/packages/flutter_tools/test/general.shard/hot_test.dart +++ b/packages/flutter_tools/test/general.shard/hot_test.dart @@ -488,7 +488,6 @@ void main() { String? sdkName, bool? emulator, String? reason, - Usage usage, Analytics? analytics, ) async { firstReloadDetails['finalLibraryCount'] = 2; diff --git a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart index f286ff0c89..d468d3b368 100644 --- a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart @@ -13,7 +13,6 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/ios/xcode_build_settings.dart'; import 'package:flutter_tools/src/ios/xcodeproj.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:unified_analytics/unified_analytics.dart'; import '../../src/common.dart'; @@ -61,7 +60,6 @@ void main() { fileSystem: fileSystem, platform: platform, processManager: fakeProcessManager, - usage: TestUsage(), analytics: const NoOpAnalytics(), ); }); @@ -181,7 +179,6 @@ void main() { fileSystem: fileSystem, platform: platform, processManager: fakeProcessManager, - usage: TestUsage(), analytics: const NoOpAnalytics(), ); fileSystem.file(xcodebuild).deleteSync(); @@ -568,7 +565,6 @@ void main() { fileSystem: fileSystem, platform: platform, processManager: fakeProcessManager, - usage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -598,7 +594,6 @@ void main() { fileSystem: fileSystem, platform: platform, processManager: fakeProcessManager, - usage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -631,7 +626,6 @@ void main() { fileSystem: fileSystem, platform: platform, processManager: fakeProcessManager, - usage: TestUsage(), analytics: const NoOpAnalytics(), ); diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart index 58298afaf8..c7ccc6f029 100644 --- a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart @@ -15,7 +15,6 @@ import 'package:flutter_tools/src/flutter_plugins.dart'; import 'package:flutter_tools/src/ios/xcodeproj.dart'; import 'package:flutter_tools/src/macos/cocoapods.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:test/fake.dart'; import 'package:unified_analytics/unified_analytics.dart'; @@ -32,7 +31,6 @@ void main() { late FakeProcessManager fakeProcessManager; late CocoaPods cocoaPodsUnderTest; late BufferLogger logger; - late TestUsage usage; late FakeAnalytics fakeAnalytics; // TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default. @@ -74,7 +72,6 @@ void main() { fileSystem = MemoryFileSystem.test(); fakeProcessManager = FakeProcessManager.empty(); logger = BufferLogger.test(); - usage = TestUsage(); fakeAnalytics = getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), @@ -85,7 +82,6 @@ void main() { logger: logger, platform: FakePlatform(operatingSystem: 'macos'), xcodeProjectInterpreter: FakeXcodeProjectInterpreter(), - usage: usage, analytics: fakeAnalytics, ); fileSystem.file( @@ -227,7 +223,6 @@ void main() { logger: logger, platform: FakePlatform(operatingSystem: 'macos'), xcodeProjectInterpreter: fakeXcodeProjectInterpreter, - usage: usage, analytics: fakeAnalytics, ); @@ -269,7 +264,6 @@ void main() { logger: logger, platform: FakePlatform(operatingSystem: 'macos'), xcodeProjectInterpreter: FakeXcodeProjectInterpreter(isInstalled: false), - usage: usage, analytics: fakeAnalytics, ); @@ -1261,7 +1255,6 @@ end'''); ); expect(logger.errorText, contains('set up CocoaPods for ARM macOS')); expect(logger.errorText, contains('enable-libffi-alloc')); - expect(usage.events, contains(const TestUsageEvent('pod-install-failure', 'arm-ffi'))); expect( fakeAnalytics.sentEvents, contains( @@ -1487,7 +1480,6 @@ end'''); processManager: fakeProcessManager, version: Version(14, 3, 0), ), - usage: usage, analytics: fakeAnalytics, ); diff --git a/packages/flutter_tools/test/general.shard/macos/macos_project_migration_test.dart b/packages/flutter_tools/test/general.shard/macos/macos_project_migration_test.dart index 671f152822..6c8f518c7f 100644 --- a/packages/flutter_tools/test/general.shard/macos/macos_project_migration_test.dart +++ b/packages/flutter_tools/test/general.shard/macos/macos_project_migration_test.dart @@ -12,7 +12,6 @@ import 'package:flutter_tools/src/macos/migrations/nsapplicationmain_deprecation import 'package:flutter_tools/src/macos/migrations/remove_macos_framework_link_and_embedding_migration.dart'; import 'package:flutter_tools/src/macos/migrations/secure_restorable_state_migration.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:test/fake.dart'; import 'package:unified_analytics/unified_analytics.dart'; @@ -22,7 +21,6 @@ import '../../src/fakes.dart'; void main() { group('remove link and embed migration', () { - late TestUsage testUsage; late FakeAnalytics fakeAnalytics; late MemoryFileSystem memoryFileSystem; late BufferLogger testLogger; @@ -30,7 +28,6 @@ void main() { late File xcodeProjectInfoFile; setUp(() { - testUsage = TestUsage(); memoryFileSystem = MemoryFileSystem.test(); fakeAnalytics = getInitializedFakeAnalyticsInstance( fs: memoryFileSystem, @@ -44,14 +41,8 @@ void main() { testWithoutContext('skipped if files are missing', () async { final RemoveMacOSFrameworkLinkAndEmbeddingMigration macosProjectMigration = - RemoveMacOSFrameworkLinkAndEmbeddingMigration( - macOSProject, - testLogger, - testUsage, - fakeAnalytics, - ); + RemoveMacOSFrameworkLinkAndEmbeddingMigration(macOSProject, testLogger, fakeAnalytics); await macosProjectMigration.migrate(); - expect(testUsage.events, isEmpty); expect(fakeAnalytics.sentEvents, isEmpty); expect(xcodeProjectInfoFile.existsSync(), isFalse); @@ -69,14 +60,8 @@ void main() { final DateTime projectLastModified = xcodeProjectInfoFile.lastModifiedSync(); final RemoveMacOSFrameworkLinkAndEmbeddingMigration macosProjectMigration = - RemoveMacOSFrameworkLinkAndEmbeddingMigration( - macOSProject, - testLogger, - testUsage, - fakeAnalytics, - ); + RemoveMacOSFrameworkLinkAndEmbeddingMigration(macOSProject, testLogger, fakeAnalytics); await macosProjectMigration.migrate(); - expect(testUsage.events, isEmpty); expect(fakeAnalytics.sentEvents, isEmpty); expect(xcodeProjectInfoFile.lastModifiedSync(), projectLastModified); @@ -92,12 +77,7 @@ shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/. xcodeProjectInfoFile.writeAsStringSync(contents); final RemoveMacOSFrameworkLinkAndEmbeddingMigration macosProjectMigration = - RemoveMacOSFrameworkLinkAndEmbeddingMigration( - macOSProject, - testLogger, - testUsage, - fakeAnalytics, - ); + RemoveMacOSFrameworkLinkAndEmbeddingMigration(macOSProject, testLogger, fakeAnalytics); await macosProjectMigration.migrate(); expect(xcodeProjectInfoFile.readAsStringSync(), contents); expect(testLogger.statusText, isEmpty); @@ -116,14 +96,8 @@ keep this 2 '''); final RemoveMacOSFrameworkLinkAndEmbeddingMigration macosProjectMigration = - RemoveMacOSFrameworkLinkAndEmbeddingMigration( - macOSProject, - testLogger, - testUsage, - fakeAnalytics, - ); + RemoveMacOSFrameworkLinkAndEmbeddingMigration(macOSProject, testLogger, fakeAnalytics); await macosProjectMigration.migrate(); - expect(testUsage.events, isEmpty); expect(fakeAnalytics.sentEvents, isEmpty); expect(xcodeProjectInfoFile.readAsStringSync(), r''' @@ -140,21 +114,12 @@ keep this 2 '''); final RemoveMacOSFrameworkLinkAndEmbeddingMigration macosProjectMigration = - RemoveMacOSFrameworkLinkAndEmbeddingMigration( - macOSProject, - testLogger, - testUsage, - fakeAnalytics, - ); + RemoveMacOSFrameworkLinkAndEmbeddingMigration(macOSProject, testLogger, fakeAnalytics); expect( macosProjectMigration.migrate, throwsToolExit(message: 'Your Xcode project requires migration'), ); - expect( - testUsage.events, - contains(const TestUsageEvent('macos-migration', 'remove-frameworks', label: 'failure')), - ); expect( fakeAnalytics.sentEvents, contains( @@ -173,20 +138,11 @@ keep this 2 '''); final RemoveMacOSFrameworkLinkAndEmbeddingMigration macosProjectMigration = - RemoveMacOSFrameworkLinkAndEmbeddingMigration( - macOSProject, - testLogger, - testUsage, - fakeAnalytics, - ); + RemoveMacOSFrameworkLinkAndEmbeddingMigration(macOSProject, testLogger, fakeAnalytics); expect( macosProjectMigration.migrate, throwsToolExit(message: 'Your Xcode project requires migration'), ); - expect( - testUsage.events, - contains(const TestUsageEvent('macos-migration', 'remove-frameworks', label: 'failure')), - ); expect( fakeAnalytics.sentEvents, contains( diff --git a/packages/flutter_tools/test/general.shard/mdns_discovery_test.dart b/packages/flutter_tools/test/general.shard/mdns_discovery_test.dart index 97fbc7189f..5dda633bd3 100644 --- a/packages/flutter_tools/test/general.shard/mdns_discovery_test.dart +++ b/packages/flutter_tools/test/general.shard/mdns_discovery_test.dart @@ -13,7 +13,6 @@ import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/ios/devices.dart'; import 'package:flutter_tools/src/mdns_discovery.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:multicast_dns/multicast_dns.dart'; import 'package:test/fake.dart'; import 'package:unified_analytics/unified_analytics.dart'; @@ -57,7 +56,6 @@ void main() { mdnsClient: emptyClient, preliminaryMDnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -88,7 +86,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -117,7 +114,6 @@ void main() { mdnsClient: emptyClient, preliminaryMDnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -141,7 +137,6 @@ void main() { mdnsClient: emptyClient, preliminaryMDnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -169,7 +164,6 @@ void main() { mdnsClient: emptyClient, preliminaryMDnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -181,7 +175,6 @@ void main() { mdnsClient: emptyClient, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -202,7 +195,6 @@ void main() { mdnsClient: emptyClient, preliminaryMDnsClient: emptyClient, logger: logger, - flutterUsage: TestUsage(), analytics: fakeAnalytics, ); final Uri? uri = await portDiscovery.getVMServiceUriForAttach('', FakeIOSDevice()); @@ -229,7 +221,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final int? port = (await portDiscovery.queryForAttach())?.port; @@ -253,7 +244,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final MDnsVmServiceDiscoveryResult? result = await portDiscovery.queryForAttach(); @@ -281,7 +271,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final int? port = (await portDiscovery.queryForAttach(applicationId: 'fiz'))?.port; @@ -310,7 +299,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final int? port = (await portDiscovery.queryForAttach(applicationId: 'bar'))?.port; @@ -328,7 +316,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect(() async => portDiscovery.queryForAttach(), throwsException); @@ -349,7 +336,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final Uri? uri = await portDiscovery.getVMServiceUriForAttach( @@ -387,7 +373,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final Uri? uri = await portDiscovery.getVMServiceUriForAttach( @@ -425,7 +410,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final Uri? uri = await portDiscovery.getVMServiceUriForAttach( @@ -483,7 +467,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect( @@ -516,7 +499,6 @@ void main() { mdnsClient: client, preliminaryMDnsClient: emptyClient, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect( @@ -536,7 +518,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -555,7 +536,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -578,7 +558,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: logger, - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -602,7 +581,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect( @@ -627,7 +605,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -665,7 +642,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -702,7 +678,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final Uri? uri = await portDiscovery.getVMServiceUriForLaunch( @@ -740,7 +715,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final Uri? uri = await portDiscovery.getVMServiceUriForLaunch( @@ -778,7 +752,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final Uri? uri = await portDiscovery.getVMServiceUriForLaunch( @@ -836,7 +809,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect( @@ -872,7 +844,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -906,7 +877,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect( @@ -922,7 +892,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: FakeMDnsClient([], >{}), logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); @@ -933,7 +902,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: FakeMDnsClient([], >{}), logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); expect(portDiscovery.deviceNameMatchesTargetName('My phone', 'My-Phone-2.local'), isFalse); @@ -986,7 +954,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final MDnsVmServiceDiscoveryResult? result = await portDiscovery.firstMatchingVmService( @@ -1048,7 +1015,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final MDnsVmServiceDiscoveryResult? result = await portDiscovery.firstMatchingVmService( @@ -1087,7 +1053,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final MDnsVmServiceDiscoveryResult? result = await portDiscovery.firstMatchingVmService( @@ -1132,7 +1097,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final MDnsVmServiceDiscoveryResult? result = await portDiscovery.firstMatchingVmService( @@ -1179,7 +1143,6 @@ void main() { final MDnsVmServiceDiscovery portDiscovery = MDnsVmServiceDiscovery( mdnsClient: client, logger: BufferLogger.test(), - flutterUsage: TestUsage(), analytics: const NoOpAnalytics(), ); final MDnsVmServiceDiscoveryResult? result = await portDiscovery.firstMatchingVmService( diff --git a/packages/flutter_tools/test/general.shard/resident_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_runner_test.dart index 2f49b423ad..697164c501 100644 --- a/packages/flutter_tools/test/general.shard/resident_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_runner_test.dart @@ -313,21 +313,6 @@ void main() { final OperationResult result = await residentRunner.restart(); expect(result.fatal, true); expect(result.code, 1); - expect( - (globals.flutterUsage as TestUsage).events, - contains( - TestUsageEvent( - 'hot', - 'exception', - parameters: CustomDimensions( - hotEventTargetPlatform: getNameForTargetPlatform(TargetPlatform.android_arm), - hotEventSdkName: 'Android', - hotEventEmulator: false, - hotEventFullRestart: false, - ), - ), - ), - ); expect( (globals.analytics as FakeAnalytics).sentEvents, contains( @@ -398,21 +383,6 @@ void main() { contains('Unable to hot reload application due to an unrecoverable error'), ); - expect( - (globals.flutterUsage as TestUsage).events, - contains( - TestUsageEvent( - 'hot', - 'reload-barred', - parameters: CustomDimensions( - hotEventTargetPlatform: getNameForTargetPlatform(TargetPlatform.android_arm), - hotEventSdkName: 'Android', - hotEventEmulator: false, - hotEventFullRestart: false, - ), - ), - ), - ); expect( fakeAnalytics.sentEvents, contains( @@ -467,21 +437,6 @@ void main() { expect(result.fatal, true); expect(result.code, 1); - expect( - (globals.flutterUsage as TestUsage).events, - contains( - TestUsageEvent( - 'hot', - 'exception', - parameters: CustomDimensions( - hotEventTargetPlatform: getNameForTargetPlatform(TargetPlatform.android_arm), - hotEventSdkName: 'Android', - hotEventEmulator: false, - hotEventFullRestart: false, - ), - ), - ), - ); expect( fakeAnalytics.sentEvents, contains( @@ -725,19 +680,11 @@ void main() { expect(result.fatal, false); expect(result.code, 0); - final TestUsageEvent event = (globals.flutterUsage as TestUsage).events.first; - expect(event.category, 'hot'); - expect(event.parameter, 'reload'); + final Event event = fakeAnalytics.sentEvents.first; + expect(event.eventName.label, 'hot_runner_info'); + expect(event.eventData['label'], 'reload'); expect( - event.parameters?.hotEventTargetPlatform, - getNameForTargetPlatform(TargetPlatform.android_arm), - ); - - final Event newEvent = fakeAnalytics.sentEvents.first; - expect(newEvent.eventName.label, 'hot_runner_info'); - expect(newEvent.eventData['label'], 'reload'); - expect( - newEvent.eventData['targetPlatform'], + event.eventData['targetPlatform'], getNameForTargetPlatform(TargetPlatform.android_arm), ); }, overrides: {Usage: () => TestUsage()}), @@ -876,24 +823,14 @@ void main() { expect(result.fatal, false); expect(result.code, 0); - final TestUsageEvent event = (globals.flutterUsage as TestUsage).events.first; - expect(event.category, 'hot'); - expect(event.parameter, 'restart'); - expect( - event.parameters?.hotEventTargetPlatform, - getNameForTargetPlatform(TargetPlatform.android_arm), - ); expect(fakeVmServiceHost?.hasRemainingExpectations, false); - // Parse out the event of interest since we may have timing events with - // the new analytics package - final List newEventList = + final List hotRunnerInfoEvents = fakeAnalytics.sentEvents .where((Event e) => e.eventName.label == 'hot_runner_info') .toList(); - expect(newEventList, hasLength(1)); - final Event newEvent = newEventList.first; - expect(newEvent.eventName.label, 'hot_runner_info'); + expect(hotRunnerInfoEvents, hasLength(1)); + final Event newEvent = hotRunnerInfoEvents.first; expect(newEvent.eventData['label'], 'restart'); expect( newEvent.eventData['targetPlatform'], @@ -1092,21 +1029,6 @@ void main() { expect(result.fatal, true); expect(result.code, 1); - expect( - (globals.flutterUsage as TestUsage).events, - contains( - TestUsageEvent( - 'hot', - 'exception', - parameters: CustomDimensions( - hotEventTargetPlatform: getNameForTargetPlatform(TargetPlatform.android_arm), - hotEventSdkName: 'Android', - hotEventEmulator: false, - hotEventFullRestart: true, - ), - ), - ), - ); expect( fakeAnalytics.sentEvents, contains( diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart index 681ed97b64..5bbfd0e88d 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart @@ -18,7 +18,6 @@ import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/isolated/devfs_web.dart'; import 'package:flutter_tools/src/isolated/resident_web_runner.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/vmservice.dart'; import 'package:test/fake.dart'; @@ -64,7 +63,6 @@ void main() { fileSystem: fileSystem, logger: BufferLogger.test(), systemClock: SystemClock.fixed(DateTime(0, 0, 0)), - usage: TestUsage(), analytics: getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), @@ -99,7 +97,6 @@ void main() { fileSystem: fileSystem, logger: BufferLogger.test(), systemClock: SystemClock.fixed(DateTime(0, 0, 0)), - usage: TestUsage(), analytics: getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), @@ -130,7 +127,6 @@ void main() { fileSystem: fileSystem, logger: BufferLogger.test(), systemClock: SystemClock.fixed(DateTime(0, 0, 0)), - usage: TestUsage(), analytics: getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), @@ -160,7 +156,6 @@ void main() { fileSystem: fileSystem, logger: BufferLogger.test(), systemClock: SystemClock.fixed(DateTime(0, 0, 0)), - usage: TestUsage(), analytics: getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), @@ -194,7 +189,6 @@ void main() { fileSystem: fileSystem, logger: BufferLogger.test(), systemClock: SystemClock.fixed(DateTime(0, 0, 0)), - usage: TestUsage(), analytics: getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart index 5b2137f958..a7bbb0c737 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart @@ -27,7 +27,6 @@ import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/isolated/devfs_web.dart'; import 'package:flutter_tools/src/isolated/resident_web_runner.dart'; import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_devtools_handler.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/vmservice.dart'; @@ -89,7 +88,6 @@ void main() { late FakeVmServiceHost fakeVmServiceHost; late MemoryFileSystem fileSystem; late ProcessManager processManager; - late TestUsage testUsage; late FakeAnalytics fakeAnalytics; // TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default. @@ -99,7 +97,6 @@ void main() { } setUp(() { - testUsage = TestUsage(); fileSystem = MemoryFileSystem.test(); processManager = FakeProcessManager.any(); debugConnection = FakeDebugConnection(); @@ -146,7 +143,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, ); @@ -176,7 +172,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug, startPaused: true), fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, ); @@ -198,7 +193,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, ); @@ -210,7 +204,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.profile), fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, ); @@ -350,7 +343,6 @@ void main() { stayResident: false, fileSystem: fileSystem, logger: logger, - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, @@ -379,7 +371,6 @@ void main() { stayResident: false, fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, @@ -595,7 +586,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug, startPaused: true), fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, @@ -674,21 +664,6 @@ void main() { expect(result.code, 0); expect(webDevFS.mainUri.toString(), contains('entrypoint.dart')); - // ensure that analytics are sent. - expect(testUsage.events, [ - TestUsageEvent( - 'hot', - 'restart', - parameters: CustomDimensions.fromMap({ - 'cd27': 'web-javascript', - 'cd28': '', - 'cd29': 'false', - 'cd30': 'true', - 'cd13': '0', - 'cd48': 'false', - }), - ), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -702,9 +677,6 @@ void main() { ), ), ); - expect(testUsage.timings, const [ - TestTimingEvent('hot', 'web-incremental-restart', Duration.zero), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -717,7 +689,6 @@ void main() { ); }, overrides: { - Usage: () => testUsage, Analytics: () => fakeAnalytics, FileSystem: () => fileSystem, ProcessManager: () => processManager, @@ -781,21 +752,6 @@ void main() { expect(logger.statusText, contains('Restarted application in')); expect(result.code, 0); - // ensure that analytics are sent. - expect(testUsage.events, [ - TestUsageEvent( - 'hot', - 'restart', - parameters: CustomDimensions.fromMap({ - 'cd27': 'web-javascript', - 'cd28': '', - 'cd29': 'false', - 'cd30': 'true', - 'cd13': '0', - 'cd48': 'false', - }), - ), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -809,9 +765,6 @@ void main() { ), ), ); - expect(testUsage.timings, const [ - TestTimingEvent('hot', 'web-incremental-restart', Duration.zero), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -824,7 +777,6 @@ void main() { ); }, overrides: { - Usage: () => testUsage, Analytics: () => fakeAnalytics, FileSystem: () => fileSystem, ProcessManager: () => processManager, @@ -857,12 +809,9 @@ void main() { expect(result.code, 0); // web-server device does not send restart analytics - expect(testUsage.events, isEmpty); expect(fakeAnalytics.sentEvents, isEmpty); - expect(testUsage.timings, isEmpty); }, overrides: { - Usage: () => testUsage, Analytics: () => fakeAnalytics, FileSystem: () => fileSystem, ProcessManager: () => processManager, @@ -898,12 +847,9 @@ void main() { unawaited(residentWebRunner.run(connectionInfoCompleter: connectionInfoCompleter)); expect(await residentWebRunner.run(), 1); - expect(testUsage.events, isEmpty); expect(fakeAnalytics.sentEvents, isEmpty); - expect(testUsage.timings, isEmpty); }, overrides: { - Usage: () => testUsage, Analytics: () => fakeAnalytics, FileSystem: () => fileSystem, ProcessManager: () => processManager, @@ -969,12 +915,9 @@ void main() { expect(result.code, 1); expect(result.message, contains('Failed to recompile application.')); - expect(testUsage.events, isEmpty); expect(fakeAnalytics.sentEvents, isEmpty); - expect(testUsage.timings, isEmpty); }, overrides: { - Usage: () => testUsage, Analytics: () => fakeAnalytics, FileSystem: () => fileSystem, ProcessManager: () => processManager, @@ -1187,7 +1130,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), fileSystem: fileSystem, logger: logger, - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, @@ -1233,7 +1175,6 @@ void main() { debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug), fileSystem: fileSystem, logger: logger, - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, @@ -1276,7 +1217,6 @@ void main() { stayResident: false, fileSystem: fileSystem, logger: BufferLogger.test(), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: globals.systemClock, devtoolsHandler: createNoOpHandler, @@ -1568,7 +1508,6 @@ ResidentRunner setUpResidentRunner( flutterDevice, flutterProject: FlutterProject.fromDirectoryTest(globals.fs.currentDirectory), debuggingOptions: debuggingOptions ?? DebuggingOptions.enabled(BuildInfo.debug), - usage: globals.flutterUsage, analytics: globals.analytics, systemClock: systemClock ?? SystemClock.fixed(DateTime.now()), fileSystem: globals.fs, diff --git a/packages/flutter_tools/test/general.shard/run_hot_test.dart b/packages/flutter_tools/test/general.shard/run_hot_test.dart index 0bf09564c4..43ed3fd483 100644 --- a/packages/flutter_tools/test/general.shard/run_hot_test.dart +++ b/packages/flutter_tools/test/general.shard/run_hot_test.dart @@ -8,7 +8,6 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/devfs.dart'; import 'package:flutter_tools/src/device.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_devtools_handler.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/run_hot.dart'; @@ -32,7 +31,6 @@ void main() { 'flutter-sdk', false, 'test-reason', - TestUsage(), const NoOpAnalytics(), ); }); diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart index 5c839e9e08..09e43dd6a3 100644 --- a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart @@ -10,7 +10,6 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/terminal.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/globals.dart' as globals; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/runner/flutter_command_runner.dart'; @@ -30,7 +29,6 @@ void main() { group('FlutterCommandRunner', () { late MemoryFileSystem fileSystem; late Platform platform; - late TestUsage testUsage; late FakeAnalytics fakeAnalytics; setUpAll(() { @@ -42,7 +40,6 @@ void main() { fileSystem.directory(_kFlutterRoot).createSync(recursive: true); fileSystem.directory(_kProjectRoot).createSync(recursive: true); fileSystem.currentDirectory = _kProjectRoot; - testUsage = TestUsage(); fakeAnalytics = getInitializedFakeAnalyticsInstance( fs: fileSystem, fakeFlutterVersion: FakeFlutterVersion(), @@ -210,7 +207,6 @@ void main() { await runner.run(['--version']); expect(version.didFetchTagsAndUpdate, true); - expect(testUsage.commands, contains(const TestUsageCommand('version'))); expect( fakeAnalytics.sentEvents, contains( @@ -228,7 +224,6 @@ void main() { Platform: () => platform, FlutterVersion: () => FakeFlutterVersion(), OutputPreferences: () => OutputPreferences.test(), - Usage: () => testUsage, Analytics: () => fakeAnalytics, }, ); diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart index c8b3fd3a3e..877a1c2457 100644 --- a/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart @@ -19,14 +19,11 @@ import 'package:flutter_tools/src/base/user_messages.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/run.dart'; -import 'package:flutter_tools/src/dart/pub.dart'; import 'package:flutter_tools/src/device.dart'; -import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/pre_run_validator.dart'; -import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; +import 'package:meta/meta.dart'; import 'package:test/fake.dart'; import 'package:unified_analytics/testing.dart'; import 'package:unified_analytics/unified_analytics.dart'; @@ -34,21 +31,13 @@ import 'package:unified_analytics/unified_analytics.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/fake_devices.dart'; -import '../../src/fake_pub_deps.dart'; import '../../src/fakes.dart'; import '../../src/test_flutter_command_runner.dart'; import 'utils.dart'; void main() { - // TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default. - // See https://github.com/flutter/flutter/issues/160257 for details. - FeatureFlags enableExplicitPackageDependencies() { - return TestFeatureFlags(isExplicitPackageDependenciesEnabled: true); - } - group('Flutter Command', () { late FakeCache cache; - late TestUsage usage; late FakeAnalytics fakeAnalytics; late FakeClock clock; late FakeProcessInfo processInfo; @@ -66,7 +55,6 @@ void main() { setUp(() { Cache.disableLocking(); cache = FakeCache(); - usage = TestUsage(); clock = FakeClock(); processInfo = FakeProcessInfo(); processInfo.maxRss = 10; @@ -237,6 +225,7 @@ void main() { }, ); + @isTest void testUsingCommandContext(String testName, dynamic Function() testBody) { testUsingContext( testName, @@ -246,7 +235,6 @@ void main() { ProcessInfo: () => processInfo, ProcessManager: () => processManager, SystemClock: () => clock, - Usage: () => usage, Analytics: () => fakeAnalytics, }, ); @@ -263,10 +251,6 @@ void main() { ); await flutterCommand.run(); - expect(usage.events, [ - const TestUsageEvent('tool-command-result', 'dummy', label: 'success'), - const TestUsageEvent('tool-command-max-rss', 'dummy', label: 'success', value: 10), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -291,10 +275,6 @@ void main() { ); await flutterCommand.run(); - expect(usage.events, [ - const TestUsageEvent('tool-command-result', 'dummy', label: 'warning'), - const TestUsageEvent('tool-command-max-rss', 'dummy', label: 'warning', value: 10), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -318,10 +298,6 @@ void main() { }, ); await expectLater(() => flutterCommand.run(), throwsToolExit()); - expect(usage.events, [ - const TestUsageEvent('tool-command-result', 'dummy', label: 'fail'), - const TestUsageEvent('tool-command-max-rss', 'dummy', label: 'fail', value: 10), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -430,10 +406,6 @@ void main() { signalController.add(mockSignal); await completer.future; - expect(usage.events, [ - const TestUsageEvent('tool-command-result', 'dummy', label: 'killed'), - const TestUsageEvent('tool-command-max-rss', 'dummy', label: 'killed', value: 10), - ]); expect( fakeAnalytics.sentEvents, contains( @@ -456,7 +428,6 @@ void main() { exitSignals: [signalUnderTest], ), SystemClock: () => clock, - Usage: () => usage, Analytics: () => fakeAnalytics, }, ); @@ -499,7 +470,6 @@ void main() { subForSigTerm: signalUnderTest, exitSignals: [signalUnderTest], ), - Usage: () => usage, }, ); }); @@ -511,12 +481,6 @@ void main() { final DummyFlutterCommand flutterCommand = DummyFlutterCommand(); await flutterCommand.run(); - expect( - usage.timings, - contains( - const TestTimingEvent('flutter', 'dummy', Duration(milliseconds: 1000), label: 'fail'), - ), - ); expect( fakeAnalytics.sentEvents, contains( @@ -537,8 +501,6 @@ void main() { final DummyFlutterCommand flutterCommand = DummyFlutterCommand(noUsagePath: true); await flutterCommand.run(); - expect(usage.timings, isEmpty); - // Iterate through and count all the [Event.timing] instances int timingEventCounts = 0; for (final Event e in fakeAnalytics.sentEvents) { if (e.eventName == DashEvent.timing) { @@ -570,17 +532,6 @@ void main() { ); await flutterCommand.run(); - expect( - usage.timings, - contains( - const TestTimingEvent( - 'flutter', - 'dummy', - Duration(milliseconds: 500), - label: 'success-blah1-blah2-blah3', - ), - ), - ); expect( fakeAnalytics.sentEvents, contains( @@ -605,12 +556,6 @@ void main() { ); await expectLater(() => flutterCommand.run(), throwsToolExit()); - expect( - usage.timings, - contains( - const TestTimingEvent('flutter', 'dummy', Duration(milliseconds: 1000), label: 'fail'), - ), - ); expect( fakeAnalytics.sentEvents, contains( @@ -624,66 +569,6 @@ void main() { ); }); - testUsingContext( - 'reports null safety analytics when reportNullSafety is true', - () async { - globals.fs.file('lib/main.dart') - ..createSync(recursive: true) - ..writeAsStringSync('// @dart=2.12'); - globals.fs.file('pubspec.yaml').writeAsStringSync('name: example\n'); - globals.fs.file('.dart_tool/package_config.json') - ..createSync(recursive: true) - ..writeAsStringSync(r''' -{ - "configVersion": 2, - "packages": [ - { - "name": "example", - "rootUri": "../", - "packageUri": "lib/", - "languageVersion": "2.12" - } - ], - "generated": "2020-12-02T19:30:53.862346Z", - "generator": "pub", - "generatorVersion": "2.12.0-76.0.dev" -} -'''); - final FakeReportingNullSafetyCommand command = FakeReportingNullSafetyCommand(); - final CommandRunner runner = createTestCommandRunner(command); - - await runner.run(['test']); - - expect( - usage.events, - containsAll([ - const TestUsageEvent( - NullSafetyAnalysisEvent.kNullSafetyCategory, - 'runtime-mode', - label: 'NullSafetyMode.sound', - ), - TestUsageEvent( - NullSafetyAnalysisEvent.kNullSafetyCategory, - 'stats', - parameters: CustomDimensions.fromMap({'cd49': '1', 'cd50': '1'}), - ), - const TestUsageEvent( - NullSafetyAnalysisEvent.kNullSafetyCategory, - 'language-version', - label: '2.12', - ), - ]), - ); - }, - overrides: { - Pub: () => FakePub(), - Usage: () => usage, - FileSystem: () => fileSystem, - ProcessManager: () => FakeProcessManager.any(), - FeatureFlags: enableExplicitPackageDependencies, - }, - ); - testUsingContext( 'use packagesPath to generate BuildInfo', () async { @@ -1518,32 +1403,6 @@ class FakeTargetCommand extends FlutterCommand { String get name => 'test'; } -class FakeReportingNullSafetyCommand extends FlutterCommand { - FakeReportingNullSafetyCommand() { - argParser.addFlag('debug'); - argParser.addFlag('release'); - argParser.addFlag('jit-release'); - argParser.addFlag('profile'); - } - - @override - String get description => 'test'; - - @override - String get name => 'test'; - - @override - bool get shouldRunPub => true; - - @override - bool get reportNullSafety => true; - - @override - Future runCommand() async { - return FlutterCommandResult.success(); - } -} - class FakeDdsCommand extends FlutterCommand { FakeDdsCommand() { addDdsOptions(verboseHelp: false); @@ -1617,25 +1476,6 @@ class FakeClock extends Fake implements SystemClock { } } -class FakePub extends Fake implements Pub { - @override - Future get({ - required PubContext context, - required FlutterProject project, - bool upgrade = false, - bool offline = false, - String? flutterRootOverride, - bool checkUpToDate = false, - bool shouldSkipThirdPartyGenerator = true, - PubOutputMode outputMode = PubOutputMode.all, - }) async {} - - @override - Future> deps(FlutterProject project) { - return FakePubWithPrimedDeps().deps(project); - } -} - class _TestDeviceManager extends DeviceManager { _TestDeviceManager({required super.logger}); List devices = []; diff --git a/packages/flutter_tools/test/general.shard/web/compile_web_test.dart b/packages/flutter_tools/test/general.shard/web/compile_web_test.dart index 6feea1c90b..62acb43837 100644 --- a/packages/flutter_tools/test/general.shard/web/compile_web_test.dart +++ b/packages/flutter_tools/test/general.shard/web/compile_web_test.dart @@ -80,7 +80,6 @@ void main() { logger: logger, processManager: FakeProcessManager.any(), buildSystem: buildSystem, - usage: testUsage, flutterVersion: flutterVersion, fileSystem: fileSystem, analytics: fakeAnalytics, @@ -104,22 +103,6 @@ void main() { // Runs ScrubGeneratedPluginRegistrant migrator. expect(logger.traceText, contains('generated_plugin_registrant.dart not found. Skipping.')); - // Sends build config event - expect( - testUsage.events, - unorderedEquals([ - const TestUsageEvent( - 'build', - 'web', - label: 'web-compile', - parameters: CustomDimensions( - buildEventSettings: - 'optimizationLevel: 0; web-renderer: skwasm,canvaskit; web-target: wasm,js;', - ), - ), - ]), - ); - expect( fakeAnalytics.sentEvents, containsAll([ @@ -131,10 +114,6 @@ void main() { ]), ); - // Sends timing event. - final TestTimingEvent timingEvent = testUsage.timings.single; - expect(timingEvent.category, 'build'); - expect(timingEvent.variableName, 'dual-compile'); expect( analyticsTimingEventExists( sentEvents: fakeAnalytics.sentEvents, @@ -171,7 +150,6 @@ void main() { logger: logger, processManager: FakeProcessManager.any(), buildSystem: buildSystem, - usage: testUsage, flutterVersion: flutterVersion, fileSystem: fileSystem, analytics: fakeAnalytics,