Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Unified Diff: sdk/lib/_internal/pub/lib/src/log.dart

Issue 311003002: Add instrumentation for tracking how long it takes barback to start. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/pub/lib/src/log.dart
diff --git a/sdk/lib/_internal/pub/lib/src/log.dart b/sdk/lib/_internal/pub/lib/src/log.dart
index 0b93b3f3df26cee40c5b536b0bb67f05d22ec3c5..e50d7505f47197fa95dc547458b8fd2ec92ed952 100644
--- a/sdk/lib/_internal/pub/lib/src/log.dart
+++ b/sdk/lib/_internal/pub/lib/src/log.dart
@@ -37,8 +37,13 @@ const _MAX_TRANSCRIPT = 10000;
/// [recordTranscript()] is called.
Transcript<Entry> _transcript;
-/// The currently-running progress indicator or `null` if there is none.
-Progress _progress;
+/// All currently-running progress indicators.
+final _progresses = new Set<Progress>();
+
+/// The currently-animated progress indicator, if any.
+///
+/// This will also be in [_progresses].
+Progress _animatedProgress;
final _cyan = getSpecial('\u001b[36m');
final _green = getSpecial('\u001b[32m');
@@ -222,29 +227,27 @@ void dumpTranscript() {
}
/// Prints [message] then displays an updated elapsed time until the future
-/// returned by [callback] completes. If anything else is logged during this
-/// (include another call to [progress]) that cancels the progress.
-Future progress(String message, Future callback()) {
+/// returned by [callback] completes.
+///
+/// If anything else is logged during this (including another call to
+/// [progress]) that cancels the progress animation, although the total time
+/// will still be printed once it finishes. If [fine] is passed, the progress
+/// information will only be visible at [Level.FINE].
+Future progress(String message, Future callback(), {bool fine: false}) {
_stopProgress();
- _progress = new Progress(message);
+ var progress = new Progress(message, fine: fine);
+ _animatedProgress = progress;
+ _progresses.add(progress);
return callback().whenComplete(() {
- var message = _stopProgress();
-
- // Add the progress message to the transcript.
- if (_transcript != null && message != null) {
- _transcript.add(new Entry(Level.MESSAGE, [message]));
- }
+ progress.stop();
+ _progresses.remove(progress);
});
}
-/// Stops the running progress indicator, if currently running.
-///
-/// Returns the final progress message, if any, otherwise `null`.
-String _stopProgress() {
- if (_progress == null) return null;
- var message = _progress.stop();
- _progress = null;
- return message;
+/// Stops animating the running progress indicator, if currently running.
+void _stopProgress() {
+ if (_animatedProgress != null) _animatedProgress.stopAnimating();
+ _animatedProgress = null;
}
/// Wraps [text] in the ANSI escape codes to make it bold when on a platform
@@ -333,6 +336,9 @@ void showAll() {
_loggers[Level.FINE] = _logToStderrWithLabel;
}
+/// Returns whether or not logs at [level] will be printed.
+bool isLevelVisible(Level level) => _loggers[level] != null;
+
/// Log function that prints the message to stdout.
void _logToStdout(Entry entry) {
_logToStream(stdout, entry, showLabel: false);
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/barback/barback_server.dart ('k') | sdk/lib/_internal/pub/lib/src/progress.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698