| Index: tests/lib_strong/async/zone_bind_callback_test.dart
 | 
| diff --git a/tests/lib_strong/async/zone_bind_callback_test.dart b/tests/lib_strong/async/zone_bind_callback_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..09eded9c19e83a79851f2ed89b9421f7837b8126
 | 
| --- /dev/null
 | 
| +++ b/tests/lib_strong/async/zone_bind_callback_test.dart
 | 
| @@ -0,0 +1,40 @@
 | 
| +// Copyright (c) 2013, 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.
 | 
| +
 | 
| +import 'package:expect/expect.dart';
 | 
| +import 'package:async_helper/async_helper.dart';
 | 
| +import 'dart:async';
 | 
| +
 | 
| +main() {
 | 
| +  Completer done = new Completer();
 | 
| +
 | 
| +  var valueToCapture;
 | 
| +  var restoredValue;
 | 
| +
 | 
| +  Expect.identical(Zone.ROOT, Zone.current);
 | 
| +  Zone forked = Zone.current.fork(specification: new ZoneSpecification(
 | 
| +      registerCallback: (Zone self, ZoneDelegate parent, Zone origin, f()) {
 | 
| +        // The zone is still the same as when origin.run was invoked, which
 | 
| +        // is the root zone. (The origin zone hasn't been set yet).
 | 
| +        Expect.identical(Zone.current, Zone.ROOT);
 | 
| +        // Note that not forwarding is completely legal, though not encouraged.
 | 
| +        var capturedValue = valueToCapture;
 | 
| +        return parent.registerCallback(origin, () {
 | 
| +          restoredValue = capturedValue;
 | 
| +          return f();
 | 
| +        });
 | 
| +      }));
 | 
| +
 | 
| +  valueToCapture = 499;
 | 
| +  var fun = () {
 | 
| +    Expect.identical(forked, Zone.current);
 | 
| +    return 99;
 | 
| +  };
 | 
| +  var registered = forked.bindCallback(fun, runGuarded: false);
 | 
| +  Expect.isFalse(identical(fun, registered));
 | 
| +
 | 
| +  var result = registered();
 | 
| +  Expect.equals(99, result);
 | 
| +  Expect.equals(499, restoredValue);
 | 
| +}
 | 
| 
 |