Enable crash reporting via the unified_analytics consent mechanism.
This pulls in the `okToSend` method from https://github.com/dart-lang/tools/pull/79 in the tools repository.
Bug: https://github.com/dart-lang/sdk/issues/28633
Change-Id: I512d041750050338699d3635ba426cc0acdd5a20
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/295380
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
Auto-Submit: Janice Collins <jcollins@google.com>
diff --git a/DEPS b/DEPS
index e23f965..6047f7c 100644
--- a/DEPS
+++ b/DEPS
@@ -172,7 +172,7 @@
"test_descriptor_rev": "aa11162f55a93fc6cefc927c5189b5f74decb957",
"test_process_rev": "946bc27abd9726c4dadb9afae7c56f55df5945ed",
"test_reflective_loader_rev": "a85a930ad3736f93b96f6cc104d3576c1ae19e0e",
- "tools_rev": "58d914764eab030bf537c2c58089c8ba7b46a313",
+ "tools_rev": "2308c672e0d7446f5bfdba96594b41f26fa24a2e",
"typed_data_rev": "d85363d2efb333afce07ec409a529ec32986e1a2",
"usage_rev": "0698711985b332432ce9a901bbbd3b1ed227b090",
"vector_math_rev": "7dec98433b3e016fbe49107ad4320b31f519eb70",
diff --git a/pkg/analysis_server/lib/src/analytics/noop_analytics.dart b/pkg/analysis_server/lib/src/analytics/noop_analytics.dart
index d2f40c9..f6ea548 100644
--- a/pkg/analysis_server/lib/src/analytics/noop_analytics.dart
+++ b/pkg/analysis_server/lib/src/analytics/noop_analytics.dart
@@ -12,6 +12,9 @@
String get getConsentMessage => throw UnimplementedError();
@override
+ bool get okToSend => false;
+
+ @override
Map<String, ToolInfo> get parsedTools => throw UnimplementedError();
@override
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 5217302..05a8dd9 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -207,14 +207,38 @@
analytics.setSessionValue('cd1', analysisServerOptions.clientVersion);
}
+ final defaultSdkPath = _getSdkPath(results);
+ final dartSdkManager = DartSdkManager(defaultSdkPath);
+
+ // TODO(brianwilkerson) It would be nice to avoid creating an SDK that
+ // can't be re-used, but the SDK is needed to create a package map provider
+ // in the case where we need to run `pub` in order to get the package map.
+ var defaultSdk = _createDefaultSdk(defaultSdkPath);
+
+ // Create the analytics manager.
+ AnalyticsManager analyticsManager;
+ if (disableAnalyticsForSession) {
+ analyticsManager = AnalyticsManager(NoopAnalytics());
+ } else {
+ // TODO(jcollins): implement a full map of `clientId`s to tools to cover
+ // more analyzer entry points than vscode.
+ if (clientId == 'VS-Code') {
+ analyticsManager = AnalyticsManager(_createAnalytics(
+ defaultSdk, defaultSdkPath, DashTool.vscodePlugins));
+ } else {
+ analyticsManager = AnalyticsManager(NoopAnalytics());
+ }
+ }
+
bool shouldSendCallback() {
// Check sdkConfig to optionally force reporting on.
if (sdkConfig.crashReportingForceEnabled == true) {
return true;
}
- // TODO(devoncarew): Replace with a real enablement check.
- return false;
+ // Reuse the unified_analytics consent mechanism to determine whether
+ // we can send a crash report.
+ return analyticsManager.analytics.okToSend;
}
// Crash reporting
@@ -249,29 +273,6 @@
return;
}
- final defaultSdkPath = _getSdkPath(results);
- final dartSdkManager = DartSdkManager(defaultSdkPath);
-
- // TODO(brianwilkerson) It would be nice to avoid creating an SDK that
- // can't be re-used, but the SDK is needed to create a package map provider
- // in the case where we need to run `pub` in order to get the package map.
- var defaultSdk = _createDefaultSdk(defaultSdkPath);
-
- // Create the analytics manager.
- AnalyticsManager analyticsManager;
- if (disableAnalyticsForSession) {
- analyticsManager = AnalyticsManager(NoopAnalytics());
- } else {
- // TODO(jcollins): implement a full map of `clientId`s to tools to cover
- // more analyzer entry points than vscode.
- if (clientId == 'VS-Code') {
- analyticsManager = AnalyticsManager(_createAnalytics(
- defaultSdk, defaultSdkPath, DashTool.vscodePlugins));
- } else {
- analyticsManager = AnalyticsManager(NoopAnalytics());
- }
- }
-
// Record the start of the session.
analyticsManager.startUp(
time: sessionStartTime,