Fix analytics enabled/disabled event not being sent when the user enables/disables analytics (#160060)
Fixes https://github.com/flutter/flutter/issues/160058. In addition, only send an event when the enabled-state of analytics actually gets flipped. <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
This commit is contained in:
parent
6966a2eef1
commit
6b12651419
@ -73,47 +73,28 @@ Future<int> run(
|
|||||||
exitCode: 1);
|
exitCode: 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable analytics if user passes in the `--disable-analytics` option
|
|
||||||
// "flutter --disable-analytics"
|
|
||||||
//
|
|
||||||
// Same functionality as "flutter config --no-analytics" for disabling
|
|
||||||
// except with the `value` hard coded as false
|
|
||||||
if (args.contains('--disable-analytics')) {
|
if (args.contains('--disable-analytics')) {
|
||||||
// The tool sends the analytics event *before* toggling the flag
|
if (globals.analytics.telemetryEnabled) {
|
||||||
// intentionally to be sure that opt-out events are sent correctly.
|
globals.analytics.send(
|
||||||
AnalyticsConfigEvent(enabled: false).send();
|
Event.analyticsCollectionEnabled(status: false),
|
||||||
|
);
|
||||||
// Normally, the tool waits for the analytics to all send before the
|
// Before disablig analytics, we need to close the client to make
|
||||||
// tool exits, but only when analytics are enabled. When reporting that
|
// sure the above collection event is sent.
|
||||||
// analytics have been disable, the wait must be done here instead.
|
await globals.analytics.close();
|
||||||
await globals.flutterUsage.ensureAnalyticsSent();
|
}
|
||||||
|
|
||||||
globals.flutterUsage.enabled = false;
|
|
||||||
globals.printStatus('Analytics reporting 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(false);
|
await globals.analytics.setTelemetry(false);
|
||||||
|
globals.printStatus('Analytics reporting disabled.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable analytics if user passes in the `--enable-analytics` option
|
|
||||||
// `flutter --enable-analytics`
|
|
||||||
//
|
|
||||||
// Same functionality as `flutter config --analytics` for enabling
|
|
||||||
// except with the `value` hard coded as true
|
|
||||||
if (args.contains('--enable-analytics')) {
|
if (args.contains('--enable-analytics')) {
|
||||||
// The tool sends the analytics event *before* toggling the flag
|
final bool alreadyEnabled = globals.analytics.telemetryEnabled;
|
||||||
// intentionally to be sure that opt-out events are sent correctly.
|
|
||||||
AnalyticsConfigEvent(enabled: true).send();
|
|
||||||
|
|
||||||
globals.flutterUsage.enabled = true;
|
|
||||||
globals.printStatus('Analytics reporting enabled.');
|
|
||||||
|
|
||||||
// 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(true);
|
await globals.analytics.setTelemetry(true);
|
||||||
|
if (!alreadyEnabled) {
|
||||||
|
globals.analytics.send(
|
||||||
|
Event.analyticsCollectionEnabled(status: true),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
globals.printStatus('Analytics reporting enabled.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send an event to GA3 for any users that are opted into GA3
|
// Send an event to GA3 for any users that are opted into GA3
|
||||||
|
@ -541,7 +541,7 @@ void main() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
testUsingContext(
|
testUsingContext(
|
||||||
'runner enabling analytics with flag',
|
'--enable-analytics and --disable-analytics enables/disables telemetry',
|
||||||
() async {
|
() async {
|
||||||
io.setExitFunctionForTests((int exitCode) {});
|
io.setExitFunctionForTests((int exitCode) {});
|
||||||
|
|
||||||
@ -550,8 +550,6 @@ void main() {
|
|||||||
await runner.run(
|
await runner.run(
|
||||||
<String>['--disable-analytics'],
|
<String>['--disable-analytics'],
|
||||||
() => <FlutterCommand>[],
|
() => <FlutterCommand>[],
|
||||||
// This flutterVersion disables crash reporting.
|
|
||||||
flutterVersion: '[user-branch]/',
|
|
||||||
shutdownHooks: ShutdownHooks(),
|
shutdownHooks: ShutdownHooks(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -560,8 +558,6 @@ void main() {
|
|||||||
await runner.run(
|
await runner.run(
|
||||||
<String>['--enable-analytics'],
|
<String>['--enable-analytics'],
|
||||||
() => <FlutterCommand>[],
|
() => <FlutterCommand>[],
|
||||||
// This flutterVersion disables crash reporting.
|
|
||||||
flutterVersion: '[user-branch]/',
|
|
||||||
shutdownHooks: ShutdownHooks(),
|
shutdownHooks: ShutdownHooks(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -574,6 +570,72 @@ void main() {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
testUsingContext(
|
||||||
|
'--enable-analytics and --disable-analytics send an event when telemetry is enabled/disabled',
|
||||||
|
() async {
|
||||||
|
io.setExitFunctionForTests((int exitCode) {});
|
||||||
|
await globals.analytics.setTelemetry(true);
|
||||||
|
|
||||||
|
await runner.run(
|
||||||
|
<String>['--disable-analytics'],
|
||||||
|
() => <FlutterCommand>[],
|
||||||
|
shutdownHooks: ShutdownHooks(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
(globals.analytics as FakeAnalytics).sentEvents,
|
||||||
|
<Event>[Event.analyticsCollectionEnabled(status: false)],
|
||||||
|
);
|
||||||
|
|
||||||
|
(globals.analytics as FakeAnalytics).sentEvents.clear();
|
||||||
|
expect(globals.analytics.telemetryEnabled, false);
|
||||||
|
await runner.run(
|
||||||
|
<String>['--enable-analytics'],
|
||||||
|
() => <FlutterCommand>[],
|
||||||
|
shutdownHooks: ShutdownHooks(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect((globals.analytics as FakeAnalytics).sentEvents, <Event>[
|
||||||
|
Event.analyticsCollectionEnabled(status: true),
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
overrides: <Type, Generator>{
|
||||||
|
Analytics: () => fakeAnalytics,
|
||||||
|
FileSystem: () => MemoryFileSystem.test(),
|
||||||
|
ProcessManager: () => FakeProcessManager.any(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
testUsingContext(
|
||||||
|
'--enable-analytics and --disable-analytics do not send an event when telemetry is already enabled/disabled',
|
||||||
|
() async {
|
||||||
|
io.setExitFunctionForTests((int exitCode) {});
|
||||||
|
|
||||||
|
await globals.analytics.setTelemetry(false);
|
||||||
|
await runner.run(
|
||||||
|
<String>['--disable-analytics'],
|
||||||
|
() => <FlutterCommand>[],
|
||||||
|
shutdownHooks: ShutdownHooks(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect((globals.analytics as FakeAnalytics).sentEvents, isEmpty);
|
||||||
|
|
||||||
|
await globals.analytics.setTelemetry(true);
|
||||||
|
await runner.run(
|
||||||
|
<String>['--enable-analytics'],
|
||||||
|
() => <FlutterCommand>[],
|
||||||
|
shutdownHooks: ShutdownHooks(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect((globals.analytics as FakeAnalytics).sentEvents, isEmpty);
|
||||||
|
},
|
||||||
|
overrides: <Type, Generator>{
|
||||||
|
Analytics: () => fakeAnalytics,
|
||||||
|
FileSystem: () => MemoryFileSystem.test(),
|
||||||
|
ProcessManager: () => FakeProcessManager.any(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
testUsingContext(
|
testUsingContext(
|
||||||
'throw error when both flags passed',
|
'throw error when both flags passed',
|
||||||
() async {
|
() async {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user