Move analytics factories to constructors (#8399)
Fix an old TODO RE fixed https://github.com/dart-lang/sdk/issues/46967
diff --git a/packages/devtools_app/lib/src/shared/analytics/_analytics_web.dart b/packages/devtools_app/lib/src/shared/analytics/_analytics_web.dart
index 9b516b2..4e67114 100644
--- a/packages/devtools_app/lib/src/shared/analytics/_analytics_web.dart
+++ b/packages/devtools_app/lib/src/shared/analytics/_analytics_web.dart
@@ -113,6 +113,84 @@
String? ios_bundle_id, //metric14
});
+ factory GtagEventDevTools._create({
+ required String event_category,
+ required String event_label,
+ String? send_to,
+ bool non_interaction = false,
+ int value = 0,
+ ScreenAnalyticsMetrics? screenMetrics,
+ }) {
+ return GtagEventDevTools(
+ event_category: event_category,
+ event_label: event_label,
+ send_to: send_to,
+ non_interaction: non_interaction,
+ value: value,
+ user_app: userAppType,
+ user_build: userBuildType,
+ user_platform: userPlatformType,
+ devtools_platform: devtoolsPlatformType,
+ devtools_chrome: devtoolsChrome,
+ devtools_version: devtoolsVersion,
+ ide_launched: ideLaunched,
+ flutter_client_id: flutterClientId,
+ is_external_build: isExternalBuild.toString(),
+ is_embedded: isEmbedded().toString(),
+ g3_username: devToolsEnvironmentParameters.username(),
+ ide_launched_feature: ideLaunchedFeature,
+ is_wasm: kIsWasm.toString(),
+ // [PerformanceScreenMetrics]
+ ui_duration_micros: screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.uiDuration?.inMicroseconds
+ : null,
+ raster_duration_micros: screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.rasterDuration?.inMicroseconds
+ : null,
+ shader_compilation_duration_micros:
+ screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.shaderCompilationDuration?.inMicroseconds
+ : null,
+ trace_event_count: screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.traceEventCount
+ : null,
+ // [ProfilerScreenMetrics]
+ cpu_sample_count: screenMetrics is ProfilerScreenMetrics
+ ? screenMetrics.cpuSampleCount
+ : null,
+ cpu_stack_depth: screenMetrics is ProfilerScreenMetrics
+ ? screenMetrics.cpuStackDepth
+ : null,
+ // [MemoryScreenMetrics]
+ heap_diff_objects_before: screenMetrics is MemoryScreenMetrics
+ ? screenMetrics.heapDiffObjectsBefore
+ : null,
+ heap_diff_objects_after: screenMetrics is MemoryScreenMetrics
+ ? screenMetrics.heapDiffObjectsAfter
+ : null,
+ heap_objects_total: screenMetrics is MemoryScreenMetrics
+ ? screenMetrics.heapObjectsTotal
+ : null,
+ // [InspectorScreenMetrics]
+ root_set_count: screenMetrics is InspectorScreenMetrics
+ ? screenMetrics.rootSetCount
+ : null,
+ row_count: screenMetrics is InspectorScreenMetrics
+ ? screenMetrics.rowCount
+ : null,
+ inspector_tree_controller_id: screenMetrics is InspectorScreenMetrics
+ ? screenMetrics.inspectorTreeControllerId
+ : null,
+ // [DeepLinkScreenMetrics]
+ android_app_id: screenMetrics is DeepLinkScreenMetrics
+ ? screenMetrics.androidAppId
+ : null,
+ ios_bundle_id: screenMetrics is DeepLinkScreenMetrics
+ ? screenMetrics.iosBundleId
+ : null,
+ );
+ }
+
// Custom dimensions:
external String? get user_app;
external String? get user_build;
@@ -199,6 +277,78 @@
String? ios_bundle_id, //metric14
});
+ factory GtagExceptionDevTools._create(
+ String errorMessage, {
+ bool fatal = false,
+ ScreenAnalyticsMetrics? screenMetrics,
+ }) {
+ return GtagExceptionDevTools(
+ description: errorMessage,
+ fatal: fatal,
+ user_app: userAppType,
+ user_build: userBuildType,
+ user_platform: userPlatformType,
+ devtools_platform: devtoolsPlatformType,
+ devtools_chrome: devtoolsChrome,
+ devtools_version: devtoolsVersion,
+ ide_launched: _ideLaunched,
+ flutter_client_id: flutterClientId,
+ is_external_build: isExternalBuild.toString(),
+ is_embedded: isEmbedded().toString(),
+ g3_username: devToolsEnvironmentParameters.username(),
+ ide_launched_feature: ideLaunchedFeature,
+ is_wasm: kIsWasm.toString(),
+ // [PerformanceScreenMetrics]
+ ui_duration_micros: screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.uiDuration?.inMicroseconds
+ : null,
+ raster_duration_micros: screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.rasterDuration?.inMicroseconds
+ : null,
+ trace_event_count: screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.traceEventCount
+ : null,
+ shader_compilation_duration_micros:
+ screenMetrics is PerformanceScreenMetrics
+ ? screenMetrics.shaderCompilationDuration?.inMicroseconds
+ : null,
+ // [ProfilerScreenMetrics]
+ cpu_sample_count: screenMetrics is ProfilerScreenMetrics
+ ? screenMetrics.cpuSampleCount
+ : null,
+ cpu_stack_depth: screenMetrics is ProfilerScreenMetrics
+ ? screenMetrics.cpuStackDepth
+ : null,
+ // [MemoryScreenMetrics]
+ heap_diff_objects_before: screenMetrics is MemoryScreenMetrics
+ ? screenMetrics.heapDiffObjectsBefore
+ : null,
+ heap_diff_objects_after: screenMetrics is MemoryScreenMetrics
+ ? screenMetrics.heapDiffObjectsAfter
+ : null,
+ heap_objects_total: screenMetrics is MemoryScreenMetrics
+ ? screenMetrics.heapObjectsTotal
+ : null,
+ // [InspectorScreenMetrics]
+ root_set_count: screenMetrics is InspectorScreenMetrics
+ ? screenMetrics.rootSetCount
+ : null,
+ row_count: screenMetrics is InspectorScreenMetrics
+ ? screenMetrics.rowCount
+ : null,
+ inspector_tree_controller_id: screenMetrics is InspectorScreenMetrics
+ ? screenMetrics.inspectorTreeControllerId
+ : null,
+ // [DeepLinkScreenMetrics]
+ android_app_id: screenMetrics is DeepLinkScreenMetrics
+ ? screenMetrics.androidAppId
+ : null,
+ ios_bundle_id: screenMetrics is DeepLinkScreenMetrics
+ ? screenMetrics.iosBundleId
+ : null,
+ );
+ }
+
// Custom dimensions:
external String? get user_app;
external String? get user_build;
@@ -231,158 +381,6 @@
external String? get ios_bundle_id;
}
-// This cannot be a factory constructor in the [GtagEventDevTools] class due to
-// https://github.com/dart-lang/sdk/issues/46967.
-GtagEventDevTools _gtagEvent({
- required String event_category,
- required String event_label,
- String? send_to,
- bool non_interaction = false,
- int value = 0,
- ScreenAnalyticsMetrics? screenMetrics,
-}) {
- return GtagEventDevTools(
- event_category: event_category,
- event_label: event_label,
- send_to: send_to,
- non_interaction: non_interaction,
- value: value,
- user_app: userAppType,
- user_build: userBuildType,
- user_platform: userPlatformType,
- devtools_platform: devtoolsPlatformType,
- devtools_chrome: devtoolsChrome,
- devtools_version: devtoolsVersion,
- ide_launched: ideLaunched,
- flutter_client_id: flutterClientId,
- is_external_build: isExternalBuild.toString(),
- is_embedded: isEmbedded().toString(),
- g3_username: devToolsEnvironmentParameters.username(),
- ide_launched_feature: ideLaunchedFeature,
- is_wasm: kIsWasm.toString(),
- // [PerformanceScreenMetrics]
- ui_duration_micros: screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.uiDuration?.inMicroseconds
- : null,
- raster_duration_micros: screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.rasterDuration?.inMicroseconds
- : null,
- shader_compilation_duration_micros:
- screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.shaderCompilationDuration?.inMicroseconds
- : null,
- trace_event_count: screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.traceEventCount
- : null,
- // [ProfilerScreenMetrics]
- cpu_sample_count: screenMetrics is ProfilerScreenMetrics
- ? screenMetrics.cpuSampleCount
- : null,
- cpu_stack_depth: screenMetrics is ProfilerScreenMetrics
- ? screenMetrics.cpuStackDepth
- : null,
- // [MemoryScreenMetrics]
- heap_diff_objects_before: screenMetrics is MemoryScreenMetrics
- ? screenMetrics.heapDiffObjectsBefore
- : null,
- heap_diff_objects_after: screenMetrics is MemoryScreenMetrics
- ? screenMetrics.heapDiffObjectsAfter
- : null,
- heap_objects_total: screenMetrics is MemoryScreenMetrics
- ? screenMetrics.heapObjectsTotal
- : null,
- // [InspectorScreenMetrics]
- root_set_count: screenMetrics is InspectorScreenMetrics
- ? screenMetrics.rootSetCount
- : null,
- row_count:
- screenMetrics is InspectorScreenMetrics ? screenMetrics.rowCount : null,
- inspector_tree_controller_id: screenMetrics is InspectorScreenMetrics
- ? screenMetrics.inspectorTreeControllerId
- : null,
- // [DeepLinkScreenMetrics]
- android_app_id: screenMetrics is DeepLinkScreenMetrics
- ? screenMetrics.androidAppId
- : null,
- ios_bundle_id: screenMetrics is DeepLinkScreenMetrics
- ? screenMetrics.iosBundleId
- : null,
- );
-}
-
-// This cannot be a factory constructor in the [GtagExceptionDevTools] class due to
-// https://github.com/dart-lang/sdk/issues/46967.
-GtagExceptionDevTools _gtagException(
- String errorMessage, {
- bool fatal = false,
- ScreenAnalyticsMetrics? screenMetrics,
-}) {
- return GtagExceptionDevTools(
- description: errorMessage,
- fatal: fatal,
- user_app: userAppType,
- user_build: userBuildType,
- user_platform: userPlatformType,
- devtools_platform: devtoolsPlatformType,
- devtools_chrome: devtoolsChrome,
- devtools_version: devtoolsVersion,
- ide_launched: _ideLaunched,
- flutter_client_id: flutterClientId,
- is_external_build: isExternalBuild.toString(),
- is_embedded: isEmbedded().toString(),
- g3_username: devToolsEnvironmentParameters.username(),
- ide_launched_feature: ideLaunchedFeature,
- is_wasm: kIsWasm.toString(),
- // [PerformanceScreenMetrics]
- ui_duration_micros: screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.uiDuration?.inMicroseconds
- : null,
- raster_duration_micros: screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.rasterDuration?.inMicroseconds
- : null,
- trace_event_count: screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.traceEventCount
- : null,
- shader_compilation_duration_micros:
- screenMetrics is PerformanceScreenMetrics
- ? screenMetrics.shaderCompilationDuration?.inMicroseconds
- : null,
- // [ProfilerScreenMetrics]
- cpu_sample_count: screenMetrics is ProfilerScreenMetrics
- ? screenMetrics.cpuSampleCount
- : null,
- cpu_stack_depth: screenMetrics is ProfilerScreenMetrics
- ? screenMetrics.cpuStackDepth
- : null,
- // [MemoryScreenMetrics]
- heap_diff_objects_before: screenMetrics is MemoryScreenMetrics
- ? screenMetrics.heapDiffObjectsBefore
- : null,
- heap_diff_objects_after: screenMetrics is MemoryScreenMetrics
- ? screenMetrics.heapDiffObjectsAfter
- : null,
- heap_objects_total: screenMetrics is MemoryScreenMetrics
- ? screenMetrics.heapObjectsTotal
- : null,
- // [InspectorScreenMetrics]
- root_set_count: screenMetrics is InspectorScreenMetrics
- ? screenMetrics.rootSetCount
- : null,
- row_count:
- screenMetrics is InspectorScreenMetrics ? screenMetrics.rowCount : null,
- inspector_tree_controller_id: screenMetrics is InspectorScreenMetrics
- ? screenMetrics.inspectorTreeControllerId
- : null,
- // [DeepLinkScreenMetrics]
- android_app_id: screenMetrics is DeepLinkScreenMetrics
- ? screenMetrics.androidAppId
- : null,
- ios_bundle_id: screenMetrics is DeepLinkScreenMetrics
- ? screenMetrics.iosBundleId
- : null,
- );
-}
-
/// Whether google analytics are enabled.
Future<bool> isAnalyticsEnabled() async {
bool enabled = false;
@@ -425,7 +423,7 @@
int value = 0,
]) {
_log.fine('Event: Screen(screenName:$screenName, value:$value)');
- final gtagEvent = _gtagEvent(
+ final gtagEvent = GtagEventDevTools._create(
event_category: gac.screenViewEvent,
event_label: gac.init,
value: value,
@@ -570,7 +568,7 @@
'timedOperation:$timedOperation, '
'durationMicros:$durationMicros)',
);
- final gtagEvent = _gtagEvent(
+ final gtagEvent = GtagEventDevTools._create(
event_category: gac.timingEvent,
event_label: timedOperation,
value: durationMicros,
@@ -595,7 +593,7 @@
'value:$value, '
'nonInteraction:$nonInteraction)',
);
- final gtagEvent = _gtagEvent(
+ final gtagEvent = GtagEventDevTools._create(
event_category: gac.selectEvent,
event_label: selectedItem,
value: value,
@@ -620,7 +618,7 @@
'screenName:$screenName, '
'item:$item)',
);
- final gtagEvent = _gtagEvent(
+ final gtagEvent = GtagEventDevTools._create(
event_category: gac.impressionEvent,
event_label: item,
non_interaction: true,
@@ -641,7 +639,7 @@
if (_lastGaError == errorMessage) return;
_lastGaError = errorMessage;
- final gTagException = _gtagException(
+ final gTagException = GtagExceptionDevTools._create(
errorMessage,
fatal: fatal,
);