33// found in the LICENSE file.
44
55import '../convert.dart' ;
6+ import '../features.dart' ;
67import 'io.dart' as io;
78import 'logger.dart' ;
89import 'platform.dart' ;
@@ -69,6 +70,7 @@ class OutputPreferences {
6970}
7071
7172/// The command line terminal, if available.
73+ // TODO(ianh): merge this with AnsiTerminal, the abstraction isn't giving us anything.
7274abstract class Terminal {
7375 /// Create a new test [Terminal] .
7476 ///
@@ -81,9 +83,12 @@ abstract class Terminal {
8183 /// to perform animations.
8284 bool get supportsColor;
8385
84- /// Whether to show animations on this terminal .
86+ /// Whether animations should be used in the output .
8587 bool get isCliAnimationEnabled;
8688
89+ /// Configures isCliAnimationEnabled based on a [FeatureFlags] object.
90+ void applyFeatureFlags (FeatureFlags flags);
91+
8792 /// Whether the current terminal can display emoji.
8893 bool get supportsEmoji;
8994
@@ -158,11 +163,12 @@ class AnsiTerminal implements Terminal {
158163 required io.Stdio stdio,
159164 required Platform platform,
160165 DateTime ? now, // Time used to determine preferredStyle. Defaults to 0001-01-01 00:00.
161- this .isCliAnimationEnabled = true ,
166+ bool defaultCliAnimationEnabled = true ,
162167 })
163168 : _stdio = stdio,
164169 _platform = platform,
165- _now = now ?? DateTime (1 );
170+ _now = now ?? DateTime (1 ),
171+ _isCliAnimationEnabled = defaultCliAnimationEnabled;
166172
167173 final io.Stdio _stdio;
168174 final Platform _platform;
@@ -207,7 +213,14 @@ class AnsiTerminal implements Terminal {
207213 bool get supportsColor => _platform.stdoutSupportsAnsi;
208214
209215 @override
210- final bool isCliAnimationEnabled;
216+ bool get isCliAnimationEnabled => _isCliAnimationEnabled;
217+
218+ bool _isCliAnimationEnabled;
219+
220+ @override
221+ void applyFeatureFlags (FeatureFlags flags) {
222+ _isCliAnimationEnabled = flags.isCliAnimationEnabled;
223+ }
211224
212225 // Assume unicode emojis are supported when not on Windows.
213226 // If we are on Windows, unicode emojis are supported in Windows Terminal,
@@ -419,7 +432,14 @@ class _TestTerminal implements Terminal {
419432 final bool supportsColor;
420433
421434 @override
422- bool get isCliAnimationEnabled => supportsColor;
435+ bool get isCliAnimationEnabled => supportsColor && _isCliAnimationEnabled;
436+
437+ bool _isCliAnimationEnabled = true ;
438+
439+ @override
440+ void applyFeatureFlags (FeatureFlags flags) {
441+ _isCliAnimationEnabled = flags.isCliAnimationEnabled;
442+ }
423443
424444 @override
425445 final bool supportsEmoji;
0 commit comments