Remove more references to deprecated package:usage (executable, runner) (#160369)

Helps https://github.com/flutter/flutter/issues/150575

<details>

<summary> Pre-launch checklist </summary> 


- [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.

</details>


<!-- Links -->
[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
diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart
index ce0a5a6..fb23a3b 100644
--- a/packages/flutter_tools/lib/executable.dart
+++ b/packages/flutter_tools/lib/executable.dart
@@ -169,7 +169,7 @@
         platform: globals.platform,
       ),
     ],
-    suppressAnalytics: globals.flutterUsage.suppressAnalytics,
+    suppressAnalytics: !globals.analytics.okToSend,
   ),
   AssembleCommand(verboseHelp: verboseHelp, buildSystem: globals.buildSystem),
   AttachCommand(
diff --git a/packages/flutter_tools/lib/runner.dart b/packages/flutter_tools/lib/runner.dart
index f9a4362..73785c3 100644
--- a/packages/flutter_tools/lib/runner.dart
+++ b/packages/flutter_tools/lib/runner.dart
@@ -23,7 +23,6 @@
 import 'src/features.dart';
 import 'src/globals.dart' as globals;
 import 'src/reporting/crash_reporting.dart';
-import 'src/reporting/reporting.dart';
 import 'src/runner/flutter_command.dart';
 import 'src/runner/flutter_command_runner.dart';
 
@@ -97,18 +96,6 @@
           globals.printStatus('Analytics reporting enabled.');
         }
 
-        // Send an event to GA3 for any users that are opted into GA3
-        // analytics but have opted out of GA4 (package:unified_analytics)
-        // TODO(eliasyishak): remove once GA3 sunset, https://github.com/flutter/flutter/issues/128251
-        if (!globals.analytics.telemetryEnabled &&
-            globals.flutterUsage.enabled) {
-          UsageEvent(
-            'ga4_and_ga3_status_mismatch',
-            'opted_out_of_ga4',
-            flutterUsage: globals.flutterUsage,
-          ).send();
-        }
-
         await runner.run(args);
 
         // Triggering [runZoned]'s error callback does not necessarily mean that
@@ -188,8 +175,6 @@
       return exitWithHooks(1, shutdownHooks: shutdownHooks);
     }
 
-    // Report to both [Usage] and [CrashReportSender].
-    globals.flutterUsage.sendException(error);
     globals.analytics.send(Event.exception(exception: error.runtimeType.toString()));
     await asyncGuard(() async {
       final CrashReportSender crashReportSender = CrashReportSender(
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart
index 96df867..7a63cc0 100644
--- a/packages/flutter_tools/lib/src/base/process.dart
+++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -9,7 +9,6 @@
 
 import '../convert.dart';
 import '../globals.dart' as globals;
-import '../reporting/first_run.dart';
 import 'io.dart';
 import 'logger.dart';
 
@@ -677,56 +676,12 @@
 }
 
 Future<int> exitWithHooks(int code, {required ShutdownHooks shutdownHooks}) async {
-  // Need to get the boolean returned from `messenger.shouldDisplayLicenseTerms()`
-  // before invoking the print welcome method because the print welcome method
-  // will set `messenger.shouldDisplayLicenseTerms()` to false
-  final FirstRunMessenger messenger =
-      FirstRunMessenger(persistentToolState: globals.persistentToolState!);
-  final bool legacyAnalyticsMessageShown =
-      messenger.shouldDisplayLicenseTerms();
-
-  // Prints the welcome message if needed for legacy analytics.
-  if (!(await globals.isRunningOnBot)) {
-    globals.flutterUsage.printWelcome();
-  }
-
-  // Ensure that the consent message has been displayed for unified analytics
   if (globals.analytics.shouldShowMessage) {
     globals.logger.printStatus(globals.analytics.getConsentMessage);
-    if (!globals.flutterUsage.enabled) {
-      globals.printStatus(
-          'Please note that analytics reporting was already disabled, '
-          'and will continue to be disabled.\n');
-    }
-
-    // Because the legacy analytics may have also sent a message,
-    // the conditional below will print additional messaging informing
-    // users that the two consent messages they are receiving is not a
-    // bug
-    if (legacyAnalyticsMessageShown) {
-      globals.logger
-          .printStatus('You have received two consent messages because '
-              'the flutter tool is migrating to a new analytics system. '
-              'Disabling analytics collection will disable both the legacy '
-              'and new analytics collection systems. '
-              'You can disable analytics reporting by running `flutter --disable-analytics`\n');
-    }
-
-    // Invoking this will onboard the flutter tool onto
-    // the package on the developer's machine and will
-    // allow for events to be sent to Google Analytics
-    // on subsequent runs of the flutter tool (ie. no events
-    // will be sent on the first run to allow developers to
-    // opt out of collection)
     globals.analytics.clientShowedMessage();
-  }
 
-  // Send any last analytics calls that are in progress without overly delaying
-  // the tool's exit (we wait a maximum of 250ms).
-  if (globals.flutterUsage.enabled) {
-    final Stopwatch stopwatch = Stopwatch()..start();
-    await globals.flutterUsage.ensureAnalyticsSent();
-    globals.printTrace('ensureAnalyticsSent: ${stopwatch.elapsedMilliseconds}ms');
+    // This trace is searched for in tests.
+    globals.logger.printTrace('Showed analytics consent message.');
   }
 
   // Run shutdown hooks before flushing logs
@@ -734,10 +689,6 @@
 
   final Completer<void> completer = Completer<void>();
 
-  // Allow any pending analytics events to send and close the http connection
-  //
-  // By default, we will wait 250 ms before canceling any pending events, we
-  // can change the [delayDuration] in the close method if it needs to be changed
   await globals.analytics.close();
 
   // Give the task / timer queue one cycle through before we hard exit.
diff --git a/packages/flutter_tools/test/general.shard/runner/runner_test.dart b/packages/flutter_tools/test/general.shard/runner/runner_test.dart
index 619b154..1c5813f 100644
--- a/packages/flutter_tools/test/general.shard/runner/runner_test.dart
+++ b/packages/flutter_tools/test/general.shard/runner/runner_test.dart
@@ -18,7 +18,6 @@
 import 'package:flutter_tools/src/cache.dart';
 import 'package:flutter_tools/src/globals.dart' as globals;
 import 'package:flutter_tools/src/reporting/crash_reporting.dart';
-import 'package:flutter_tools/src/reporting/reporting.dart';
 import 'package:flutter_tools/src/runner/flutter_command.dart';
 import 'package:test/fake.dart';
 import 'package:unified_analytics/unified_analytics.dart';
@@ -99,8 +98,6 @@
       // exception on the first attempt, the second attempt tries to report the
       // *original* crash, and not the crash from the first crash report
       // attempt.
-      final CrashingUsage crashingUsage = globals.flutterUsage as CrashingUsage;
-      expect(crashingUsage.sentException.toString(), 'Exception: an exception % --');
       expect(fakeAnalytics.sentEvents, contains(Event.exception(exception: '_Exception')));
     }, overrides: <Type, Generator>{
       Platform: () => FakePlatform(environment: <String, String>{
@@ -109,7 +106,6 @@
       }),
       FileSystem: () => fileSystem,
       ProcessManager: () => FakeProcessManager.any(),
-      Usage: () => CrashingUsage(),
       Artifacts: () => Artifacts.test(),
       HttpClientFactory: () => () => FakeHttpClient.any(),
       Analytics: () => fakeAnalytics,
@@ -411,13 +407,16 @@
           shutdownHooks: ShutdownHooks(),
         );
 
-        expect((globals.flutterUsage as TestUsage).printedWelcome, false);
+        expect(
+          (globals.logger as BufferLogger).traceText,
+          isNot(contains('Showed analytics consent message.')),
+        );
       },
       overrides: <Type, Generator>{
+        Logger: () => BufferLogger.test(),
         FileSystem: () => MemoryFileSystem.test(),
         ProcessManager: () => FakeProcessManager.any(),
         BotDetector: () => const FakeBotDetector(true),
-        Usage: () => TestUsage(),
       },
     );
   });
@@ -425,7 +424,6 @@
   group('unified_analytics', () {
     late FakeAnalytics fakeAnalytics;
     late MemoryFileSystem fs;
-    late TestUsage testUsage;
 
     setUp(() {
       fs = MemoryFileSystem.test();
@@ -434,7 +432,6 @@
         fs: fs,
         fakeFlutterVersion: FakeFlutterVersion(),
       );
-      testUsage = TestUsage();
     });
 
     testUsingContext(
@@ -462,85 +459,6 @@
     );
 
     testUsingContext(
-      'runner sends mismatch event to ga3 if user opted in to ga3 but out of ga4 analytics',
-      () async {
-        io.setExitFunctionForTests((int exitCode) {});
-
-        // Begin by opting out of telemetry for package:unified_analytics
-        // and leaving legacy analytics opted in
-        await fakeAnalytics.setTelemetry(false);
-        expect(fakeAnalytics.telemetryEnabled, false);
-        expect(testUsage.enabled, true);
-
-        await runner.run(
-          <String>[],
-          () => <FlutterCommand>[],
-          // This flutterVersion disables crash reporting.
-          flutterVersion: '[user-branch]/',
-          shutdownHooks: ShutdownHooks(),
-        );
-
-        expect(
-          testUsage.events,
-          contains(const TestUsageEvent(
-            'ga4_and_ga3_status_mismatch',
-            'opted_out_of_ga4',
-          )),
-        );
-        expect(fakeAnalytics.telemetryEnabled, false);
-        expect(testUsage.enabled, true);
-        expect(fakeAnalytics.sentEvents, isEmpty);
-
-      },
-      overrides: <Type, Generator>{
-        Analytics: () => fakeAnalytics,
-        FileSystem: () => MemoryFileSystem.test(),
-        ProcessManager: () => FakeProcessManager.any(),
-        Usage: () => testUsage,
-      },
-    );
-
-    testUsingContext(
-      'runner does not send mismatch event to ga3 if user opted out of ga3 & ga4 analytics',
-      () async {
-        io.setExitFunctionForTests((int exitCode) {});
-
-        // Begin by opting out of telemetry for package:unified_analytics
-        // and legacy analytics
-        await fakeAnalytics.setTelemetry(false);
-        testUsage.enabled = false;
-        expect(fakeAnalytics.telemetryEnabled, false);
-        expect(testUsage.enabled, false);
-
-        await runner.run(
-          <String>[],
-          () => <FlutterCommand>[],
-          // This flutterVersion disables crash reporting.
-          flutterVersion: '[user-branch]/',
-          shutdownHooks: ShutdownHooks(),
-        );
-
-        expect(
-          testUsage.events,
-          isNot(contains(const TestUsageEvent(
-            'ga4_and_ga3_status_mismatch',
-            'opted_out_of_ga4',
-          ))),
-        );
-        expect(fakeAnalytics.telemetryEnabled, false);
-        expect(testUsage.enabled, false);
-        expect(fakeAnalytics.sentEvents, isEmpty);
-
-      },
-      overrides: <Type, Generator>{
-        Analytics: () => fakeAnalytics,
-        FileSystem: () => MemoryFileSystem.test(),
-        ProcessManager: () => FakeProcessManager.any(),
-        Usage: () => testUsage,
-      },
-    );
-
-    testUsingContext(
       '--enable-analytics and --disable-analytics enables/disables telemetry',
       () async {
         io.setExitFunctionForTests((int exitCode) {});
@@ -721,85 +639,6 @@
   }
 }
 
-class CrashingUsage implements Usage {
-  CrashingUsage() : _impl = Usage(
-    versionOverride: '[user-branch]',
-    runningOnBot: true,
-  );
-
-  final Usage _impl;
-
-  dynamic get sentException => _sentException;
-  dynamic _sentException;
-
-  bool _firstAttempt = true;
-
-  // Crash while crashing.
-  @override
-  void sendException(dynamic exception) {
-    if (_firstAttempt) {
-      _firstAttempt = false;
-      throw Exception('CrashingUsage.sendException');
-    }
-    _sentException = exception;
-  }
-
-  @override
-  bool get suppressAnalytics => _impl.suppressAnalytics;
-
-  @override
-  set suppressAnalytics(bool value) {
-    _impl.suppressAnalytics = value;
-  }
-
-  @override
-  bool get enabled => _impl.enabled;
-
-  @override
-  set enabled(bool value) {
-    _impl.enabled = value;
-  }
-
-  @override
-  String get clientId => _impl.clientId;
-
-  @override
-  void sendCommand(String command, {CustomDimensions? parameters}) =>
-      _impl.sendCommand(command, parameters: parameters);
-
-  @override
-  void sendEvent(
-    String category,
-    String parameter, {
-    String? label,
-    int? value,
-    CustomDimensions? parameters,
-  }) => _impl.sendEvent(
-    category,
-    parameter,
-    label: label,
-    value: value,
-    parameters: parameters,
-  );
-
-  @override
-  void sendTiming(
-    String category,
-    String variableName,
-    Duration duration, {
-    String? label,
-  }) => _impl.sendTiming(category, variableName, duration, label: label);
-
-  @override
-  Stream<Map<String, dynamic>> get onSend => _impl.onSend;
-
-  @override
-  Future<void> ensureAnalyticsSent() => _impl.ensureAnalyticsSent();
-
-  @override
-  void printWelcome() => _impl.printWelcome();
-}
-
 class CustomBugInstructions extends UserMessages {
   @override
   String get flutterToolBugInstructions => kCustomBugInstructions;