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

Unified Diff: mojo/public/dart/third_party/test/lib/src/backend/outstanding_callback_counter.dart

Issue 1346773002: Stop running pub get at gclient sync time and fix build bugs (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 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: mojo/public/dart/third_party/test/lib/src/backend/outstanding_callback_counter.dart
diff --git a/mojo/public/dart/third_party/test/lib/src/backend/outstanding_callback_counter.dart b/mojo/public/dart/third_party/test/lib/src/backend/outstanding_callback_counter.dart
new file mode 100644
index 0000000000000000000000000000000000000000..ba4ba42c783b88b1968ad96b0a957defeca574d3
--- /dev/null
+++ b/mojo/public/dart/third_party/test/lib/src/backend/outstanding_callback_counter.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library test.backend.outstanding_callback_counter;
+
+import 'dart:async';
+
+/// A class that counts outstanding callbacks for a test and fires a future once
+/// they reach zero.
+///
+/// The outstanding callback count automatically starts at 1.
+class OutstandingCallbackCounter {
+ /// The number of outstanding callbacks.
+ var _count = 1;
+
+ /// A future that fires when the oustanding callback count reaches 0.
+ Future get noOutstandingCallbacks => _completer.future;
+ final _completer = new Completer();
+
+ /// Adds an outstanding callback.
+ void addOutstandingCallback() {
+ _count++;
+ }
+
+ /// Removes an outstanding callback.
+ void removeOutstandingCallback() {
+ _count--;
+ if (_count != 0) return;
+ if (_completer.isCompleted) return;
+ _completer.complete();
+ }
+
+ /// Removes all outstanding callbacks, forcing [noOutstandingCallbacks] to
+ /// fire.
+ ///
+ /// Future calls to [addOutstandingCallback] and [removeOutstandingCallback]
+ /// will be ignored.
+ void removeAllOutstandingCallbacks() {
+ if (!_completer.isCompleted) _completer.complete();
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698