mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

Fixes: - https://github.com/dart-lang/tools/issues/234 Bumps the version for package:unified_analytics and removes TODOs and lint ignores
85 lines
2.9 KiB
Dart
85 lines
2.9 KiB
Dart
// 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:unified_analytics/unified_analytics.dart';
|
|
|
|
import '../base/config.dart';
|
|
import '../base/io.dart';
|
|
import '../features.dart';
|
|
import '../globals.dart' as globals;
|
|
import '../version.dart';
|
|
|
|
/// This function is called from within the context runner to perform
|
|
/// checks that are necessary for determining if a no-op version of
|
|
/// [Analytics] gets returned.
|
|
///
|
|
/// When [enableAsserts] is set to `true`, various assert statements
|
|
/// will be enabled to ensure usage of this class is within GA4 limitations.
|
|
///
|
|
/// For testing purposes, pass in a [FakeAnalytics] instance initialized with
|
|
/// an in-memory [FileSystem] to prevent writing to disk.
|
|
Analytics getAnalytics({
|
|
required bool runningOnBot,
|
|
required FlutterVersion flutterVersion,
|
|
required Map<String, String> environment,
|
|
required String? clientIde,
|
|
required Config config,
|
|
bool enableAsserts = false,
|
|
FakeAnalytics? analyticsOverride,
|
|
}) {
|
|
final String version = flutterVersion.getVersionString(redactUnknownBranches: true);
|
|
final bool suppressEnvFlag = environment['FLUTTER_SUPPRESS_ANALYTICS']?.toLowerCase() == 'true';
|
|
|
|
if (// Ignore local user branches.
|
|
version.startsWith('[user-branch]') ||
|
|
// Many CI systems don't do a full git checkout.
|
|
version.endsWith('/unknown') ||
|
|
// Ignore bots.
|
|
runningOnBot ||
|
|
// Ignore when suppressed by FLUTTER_SUPPRESS_ANALYTICS.
|
|
suppressEnvFlag) {
|
|
return const NoOpAnalytics();
|
|
}
|
|
|
|
// Providing an override of the [Analytics] instance is preferred when
|
|
// running tests for this function to prevent writing to the filesystem
|
|
if (analyticsOverride != null) {
|
|
return analyticsOverride;
|
|
}
|
|
|
|
return Analytics(
|
|
tool: DashTool.flutterTool,
|
|
flutterChannel: flutterVersion.channel,
|
|
flutterVersion: flutterVersion.frameworkVersion,
|
|
dartVersion: flutterVersion.dartSdkVersion,
|
|
enableAsserts: enableAsserts,
|
|
clientIde: clientIde,
|
|
enabledFeatures: getEnabledFeatures(config),
|
|
);
|
|
}
|
|
|
|
/// Uses the [Config] object to get enabled features.
|
|
String? getEnabledFeatures(Config config) {
|
|
// Create string with all enabled features to send as user property
|
|
final Iterable<Feature> enabledFeatures = allFeatures.where((Feature feature) {
|
|
final String? configSetting = feature.configSetting;
|
|
return configSetting != null && config.getValue(configSetting) == true;
|
|
});
|
|
return enabledFeatures.isNotEmpty
|
|
? enabledFeatures
|
|
.map((Feature feature) => feature.configSetting)
|
|
.join(',')
|
|
: null;
|
|
}
|
|
|
|
/// Function to safely grab the max rss from [ProcessInfo].
|
|
int? getMaxRss(ProcessInfo processInfo) {
|
|
try {
|
|
return globals.processInfo.maxRss;
|
|
} on Exception catch (error) {
|
|
globals.printTrace('Querying maxRss failed with error: $error');
|
|
}
|
|
return null;
|
|
}
|