| Index: sdk/lib/io/http_multipart_form_data_impl.dart | 
| diff --git a/sdk/lib/io/http_multipart_form_data_impl.dart b/sdk/lib/io/http_multipart_form_data_impl.dart | 
| deleted file mode 100644 | 
| index 8531a9522d7e4d5c838d2a35517e559303cab148..0000000000000000000000000000000000000000 | 
| --- a/sdk/lib/io/http_multipart_form_data_impl.dart | 
| +++ /dev/null | 
| @@ -1,139 +0,0 @@ | 
| -// Copyright (c) 2012, 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. | 
| - | 
| -part of dart.io; | 
| - | 
| - | 
| -class _HttpMultipartFormData extends Stream implements HttpMultipartFormData { | 
| -  final ContentType contentType; | 
| -  final HeaderValue contentDisposition; | 
| -  final HeaderValue contentTransferEncoding; | 
| - | 
| -  final MimeMultipart _mimeMultipart; | 
| - | 
| -  bool _isText = false; | 
| - | 
| -  Stream _stream; | 
| - | 
| -  _HttpMultipartFormData(ContentType this.contentType, | 
| -                         HeaderValue this.contentDisposition, | 
| -                         HeaderValue this.contentTransferEncoding, | 
| -                         MimeMultipart this._mimeMultipart) { | 
| -    _stream = _mimeMultipart; | 
| -    if (contentTransferEncoding != null) { | 
| -      // TODO(ajohnsen): Support BASE64, etc. | 
| -      throw new HttpException("Unsupported contentTransferEncoding: " | 
| -                              "${contentTransferEncoding.value}"); | 
| -    } | 
| - | 
| -    if (contentType == null || | 
| -        contentType.primaryType == 'text' || | 
| -        contentType.mimeType == 'application/json') { | 
| -      _isText = true; | 
| -      StringBuffer buffer = new StringBuffer(); | 
| -      Encoding encoding; | 
| -      if (contentType != null) { | 
| -        encoding = Encoding.fromName(contentType.charset); | 
| -      } | 
| -      if (encoding == null) encoding = Encoding.ISO_8859_1; | 
| -      _stream = _stream | 
| -          .transform(new StringDecoder(encoding)) | 
| -          .expand((data) { | 
| -            buffer.write(data); | 
| -            var out = _decodeHttpEntityString(buffer.toString()); | 
| -            if (out != null) { | 
| -              buffer.clear(); | 
| -              return [out]; | 
| -            } | 
| -            return const []; | 
| -          }); | 
| -    } | 
| -  } | 
| - | 
| -  bool get isText => _isText; | 
| -  bool get isBinary => !_isText; | 
| - | 
| -  static HttpMultipartFormData parse(MimeMultipart multipart) { | 
| -    var type; | 
| -    var encoding; | 
| -    var disposition; | 
| -    var remaining = new Map<String, String>(); | 
| -    for (String key in multipart.headers.keys) { | 
| -      switch (key) { | 
| -        case HttpHeaders.CONTENT_TYPE: | 
| -          type = ContentType.parse(multipart.headers[key]); | 
| -          break; | 
| - | 
| -        case 'content-transfer-encoding': | 
| -          encoding = HeaderValue.parse(multipart.headers[key]); | 
| -          break; | 
| - | 
| -        case 'content-disposition': | 
| -          disposition = HeaderValue.parse(multipart.headers[key]); | 
| -          break; | 
| - | 
| -        default: | 
| -          remaining[key] = multipart.headers[key]; | 
| -          break; | 
| -      } | 
| -    } | 
| -    if (disposition == null) { | 
| -      throw new HttpException( | 
| -          "Mime Multipart doesn't contain a Content-Disposition header value"); | 
| -    } | 
| -    return new _HttpMultipartFormData(type, disposition, encoding, multipart); | 
| -  } | 
| - | 
| -  StreamSubscription listen(void onData(data), | 
| -                            {void onDone(), | 
| -                             void onError(error), | 
| -                             bool cancelOnError}) { | 
| -    return _stream.listen(onData, | 
| -                          onDone: onDone, | 
| -                          onError: onError, | 
| -                          cancelOnError: cancelOnError); | 
| -  } | 
| - | 
| -  String value(String name) { | 
| -    return _mimeMultipart.headers[name]; | 
| -  } | 
| - | 
| -  // Decode a string with HTTP entities. Returns null if the string ends in the | 
| -  // middle of a http entity. | 
| -  static String _decodeHttpEntityString(String input) { | 
| -    int amp = input.lastIndexOf('&'); | 
| -    if (amp < 0) return input; | 
| -    int end = input.lastIndexOf(';'); | 
| -    if (end < amp) return null; | 
| - | 
| -    var buffer = new StringBuffer(); | 
| -    int offset = 0; | 
| - | 
| -    parse(amp, end) { | 
| -      switch (input[amp + 1]) { | 
| -        case '#': | 
| -          if (input[amp + 2] == 'x') { | 
| -            buffer.writeCharCode( | 
| -                int.parse(input.substring(amp + 3, end), radix: 16)); | 
| -          } else { | 
| -            buffer.writeCharCode(int.parse(input.substring(amp + 2, end))); | 
| -          } | 
| -          break; | 
| - | 
| -        default: | 
| -          throw new HttpException('Unhandled HTTP entity token'); | 
| -      } | 
| -    } | 
| - | 
| -    while ((amp = input.indexOf('&', offset)) >= 0) { | 
| -      buffer.write(input.substring(offset, amp)); | 
| -      int end = input.indexOf(';', amp); | 
| -      parse(amp, end); | 
| -      offset = end + 1; | 
| -    } | 
| -    buffer.write(input.substring(offset)); | 
| -    return buffer.toString(); | 
| -  } | 
| -} | 
| - | 
|  |