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

Unified Diff: lib/core/core_patch.dart

Issue 1450393002: Roll sdk dependency to 34357cdad108dcba734949bd13bd28c76ea285e0 (Closed) Base URL: git@github.com:dart-lang/fletch.git@master
Patch Set: Update status files Created 5 years, 1 month 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: lib/core/core_patch.dart
diff --git a/lib/core/core_patch.dart b/lib/core/core_patch.dart
index e9bd06128e0971b90600888de29a19ef38858147..32e2faec900d20442c0e7e989b2074ab0dca898e 100644
--- a/lib/core/core_patch.dart
+++ b/lib/core/core_patch.dart
@@ -5,6 +5,8 @@
library dart.core_patch;
import 'dart:fletch._system' as fletch;
+import 'dart:fletch._system' show patch;
+import 'dart:collection' show LinkedHashMap, UnmodifiableMapView;
part 'bigint.dart';
part 'case.dart';
@@ -13,8 +15,6 @@ part 'int.dart';
part 'regexp.dart';
part 'string.dart';
-const patch = "patch";
-
@patch external bool identical(Object a, Object b);
@patch int identityHashCode(Object object) {
@@ -236,6 +236,18 @@ const patch = "patch";
}
return list;
}
+
+ @patch factory List.unmodifiable(Iterable elements) {
+ return new UnmodifiableListView(new List.from(elements));
+ }
+}
+
+@patch class Map<K, V> {
+ @patch factory Map() = LinkedHashMap<K, V>;
+
+ @patch factory Map.unmodifiable(Map other) {
+ return new UnmodifiableMapView<K, V>(new Map<K, V>.from(other));
+ }
}
@patch class NoSuchMethodError {
@@ -658,4 +670,36 @@ const patch = "patch";
@fletch.native static String _base() {
throw new RangeError("The Uri.base path is too large");
}
+
+ /// Encodes all characters in the string [text] except for those
+ /// that appear in [canonicalTable], and returns the escaped string.
+ @patch static String _uriEncode(
+ List<int> canonicalTable,
+ String text,
+ Encoding encoding,
+ bool spaceToPlus) {
+ byteToHex(byte, buffer) {
+ const String hex = '0123456789ABCDEF';
+ buffer.writeCharCode(hex.codeUnitAt(byte >> 4));
+ buffer.writeCharCode(hex.codeUnitAt(byte & 0x0f));
+ }
+
+ // Encode the string into bytes then generate an ASCII only string
+ // by percent encoding selected bytes.
+ StringBuffer result = new StringBuffer();
+ var bytes = encoding.encode(text);
+ for (int i = 0; i < bytes.length; i++) {
+ int byte = bytes[i];
+ if (byte < 128 &&
+ ((canonicalTable[byte >> 4] & (1 << (byte & 0x0f))) != 0)) {
+ result.writeCharCode(byte);
+ } else if (spaceToPlus && byte == _SPACE) {
+ result.writeCharCode(_PLUS);
+ } else {
+ result.writeCharCode(_PERCENT);
+ byteToHex(byte, result);
+ }
+ }
+ return result.toString();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698