| Index: mojo/public/dart/third_party/shelf/lib/src/util.dart
|
| diff --git a/mojo/public/dart/third_party/shelf/lib/src/util.dart b/mojo/public/dart/third_party/shelf/lib/src/util.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6d9f2c1b44c791cfbd8b30d76fb79214f3b618e9
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/shelf/lib/src/util.dart
|
| @@ -0,0 +1,47 @@
|
| +// Copyright (c) 2014, 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 shelf.util;
|
| +
|
| +import 'dart:async';
|
| +
|
| +/// Like [new Future], but avoids around issue 11911 by using [new Future.value]
|
| +/// under the covers.
|
| +Future newFuture(callback()) => new Future.value().then((_) => callback());
|
| +
|
| +/// Run [callback] and capture any errors that would otherwise be top-leveled.
|
| +///
|
| +/// If [this] is called in a non-root error zone, it will just run [callback]
|
| +/// and return the result. Otherwise, it will capture any errors using
|
| +/// [runZoned] and pass them to [onError].
|
| +catchTopLevelErrors(callback(), void onError(error, StackTrace stackTrace)) {
|
| + if (Zone.current.inSameErrorZone(Zone.ROOT)) {
|
| + return runZoned(callback, onError: onError);
|
| + } else {
|
| + return callback();
|
| + }
|
| +}
|
| +
|
| +/// Returns a [Map] with the values from [original] and the values from
|
| +/// [updates].
|
| +///
|
| +/// For keys that are the same between [original] and [updates], the value in
|
| +/// [updates] is used.
|
| +///
|
| +/// If [updates] is `null` or empty, [original] is returned unchanged.
|
| +Map updateMap(Map original, Map updates) {
|
| + if (updates == null || updates.isEmpty) return original;
|
| +
|
| + return new Map.from(original)..addAll(updates);
|
| +}
|
| +
|
| +/// Adds a header with [name] and [value] to [headers], which may be null.
|
| +///
|
| +/// Returns a new map without modifying [headers].
|
| +Map<String, String> addHeader(
|
| + Map<String, String> headers, String name, String value) {
|
| + headers = headers == null ? {} : new Map.from(headers);
|
| + headers[name] = value;
|
| + return headers;
|
| +}
|
|
|