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,