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

Side by Side Diff: sdk/lib/_internal/pub/lib/src/utils.dart

Issue 16756002: Stop working around issue 2644. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/oauth2/lib/src/utils.dart ('k') | sdk/lib/_internal/pub/test/test_pub.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Generic utility functions. Stuff that should possibly be in core. 5 /// Generic utility functions. Stuff that should possibly be in core.
6 library utils; 6 library utils;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 import 'dart:isolate'; 10 import 'dart:isolate';
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 var index = toSplit.indexOf(pattern); 291 var index = toSplit.indexOf(pattern);
292 if (index == -1) return [toSplit]; 292 if (index == -1) return [toSplit];
293 return [toSplit.substring(0, index), 293 return [toSplit.substring(0, index),
294 toSplit.substring(index + pattern.length)]; 294 toSplit.substring(index + pattern.length)];
295 } 295 }
296 296
297 /// Adds additional query parameters to [url], overwriting the original 297 /// Adds additional query parameters to [url], overwriting the original
298 /// parameters if a name conflict occurs. 298 /// parameters if a name conflict occurs.
299 Uri addQueryParameters(Uri url, Map<String, String> parameters) { 299 Uri addQueryParameters(Uri url, Map<String, String> parameters) {
300 var queryMap = queryToMap(url.query); 300 var queryMap = queryToMap(url.query);
301 mapAddAll(queryMap, parameters); 301 queryMap.addAll(parameters);
302 return url.resolve("?${mapToQuery(queryMap)}"); 302 return url.resolve("?${mapToQuery(queryMap)}");
303 } 303 }
304 304
305 /// Convert a URL query string (or `application/x-www-form-urlencoded` body) 305 /// Convert a URL query string (or `application/x-www-form-urlencoded` body)
306 /// into a [Map] from parameter names to values. 306 /// into a [Map] from parameter names to values.
307 Map<String, String> queryToMap(String queryList) { 307 Map<String, String> queryToMap(String queryList) {
308 var map = {}; 308 var map = {};
309 for (var pair in queryList.split("&")) { 309 for (var pair in queryList.split("&")) {
310 var split = split1(pair, "="); 310 var split = split1(pair, "=");
311 if (split.isEmpty) continue; 311 if (split.isEmpty) continue;
(...skipping 23 matching lines...) Expand all
335 /// Whether [uri1] and [uri2] are equal. This consider HTTP URIs to default to 335 /// Whether [uri1] and [uri2] are equal. This consider HTTP URIs to default to
336 /// port 80, and HTTPs URIs to default to port 443. 336 /// port 80, and HTTPs URIs to default to port 443.
337 bool urisEqual(Uri uri1, Uri uri2) => 337 bool urisEqual(Uri uri1, Uri uri2) =>
338 canonicalizeUri(uri1) == canonicalizeUri(uri2); 338 canonicalizeUri(uri1) == canonicalizeUri(uri2);
339 339
340 /// Return [uri] with redundant port information removed. 340 /// Return [uri] with redundant port information removed.
341 Uri canonicalizeUri(Uri uri) { 341 Uri canonicalizeUri(Uri uri) {
342 return uri; 342 return uri;
343 } 343 }
344 344
345 /// Add all key/value pairs from [source] to [destination], overwriting any
346 /// pre-existing values.
347 void mapAddAll(Map destination, Map source) =>
348 source.forEach((key, value) => destination[key] = value);
349
350 /// Decodes a URL-encoded string. Unlike [Uri.decodeComponent], this includes 345 /// Decodes a URL-encoded string. Unlike [Uri.decodeComponent], this includes
351 /// replacing `+` with ` `. 346 /// replacing `+` with ` `.
352 String urlDecode(String encoded) => 347 String urlDecode(String encoded) =>
353 Uri.decodeComponent(encoded.replaceAll("+", " ")); 348 Uri.decodeComponent(encoded.replaceAll("+", " "));
354 349
355 /// Takes a simple data structure (composed of [Map]s, [Iterable]s, scalar 350 /// Takes a simple data structure (composed of [Map]s, [Iterable]s, scalar
356 /// objects, and [Future]s) and recursively resolves all the [Future]s contained 351 /// objects, and [Future]s) and recursively resolves all the [Future]s contained
357 /// within. Completes with the fully resolved structure. 352 /// within. Completes with the fully resolved structure.
358 Future awaitObject(object) { 353 Future awaitObject(object) {
359 // Unroll nested futures. 354 // Unroll nested futures.
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 error is FileIOException || 533 error is FileIOException ||
539 error is HttpException || 534 error is HttpException ||
540 error is HttpParserException || 535 error is HttpParserException ||
541 error is LinkIOException || 536 error is LinkIOException ||
542 error is MimeMultipartException || 537 error is MimeMultipartException ||
543 error is OSError || 538 error is OSError ||
544 error is ProcessException || 539 error is ProcessException ||
545 error is SocketIOException || 540 error is SocketIOException ||
546 error is WebSocketException; 541 error is WebSocketException;
547 } 542 }
OLDNEW
« no previous file with comments | « pkg/oauth2/lib/src/utils.dart ('k') | sdk/lib/_internal/pub/test/test_pub.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698