Index: sdk/lib/core/uri.dart |
diff --git a/sdk/lib/core/uri.dart b/sdk/lib/core/uri.dart |
index 091e1fece45903402fde1890ed9698afe85b10e8..7787a1f8e499cf9bc771676f99872a444c1a9c5c 100644 |
--- a/sdk/lib/core/uri.dart |
+++ b/sdk/lib/core/uri.dart |
@@ -726,7 +726,7 @@ class Uri { |
*/ |
Map<String, String> get queryParameters { |
if (_queryParameters == null) { |
- _queryParameters = new UnmodifiableMapView(splitQueryString(query)); |
+ _queryParameters = new _UnmodifiableMap(splitQueryString(query)); |
} |
return _queryParameters; |
} |
@@ -1849,3 +1849,33 @@ class Uri { |
// pqrstuvwxyz ~ |
0x47ff]; // 0x70 - 0x7f 1111111111100010 |
} |
+ |
+class _UnmodifiableMap<K, V> implements Map<K, V> { |
+ final Map _map; |
+ const _UnmodifiableMap(this._map); |
+ |
+ bool containsValue(Object value) => _map.containsValue(value); |
+ bool containsKey(Object key) => _map.containsKey(key); |
+ V operator [](Object key) => _map[key]; |
+ void operator []=(K key, V value) { |
+ throw new UnsupportedError("Cannot modify an unmodifiable map"); |
+ } |
+ V putIfAbsent(K key, V ifAbsent()) { |
+ throw new UnsupportedError("Cannot modify an unmodifiable map"); |
+ } |
+ addAll(Map other) { |
+ throw new UnsupportedError("Cannot modify an unmodifiable map"); |
+ } |
+ V remove(Object key) { |
+ throw new UnsupportedError("Cannot modify an unmodifiable map"); |
+ } |
+ void clear() { |
+ throw new UnsupportedError("Cannot modify an unmodifiable map"); |
+ } |
+ void forEach(void f(K key, V value)) => _map.forEach(f); |
+ Iterable<K> get keys => _map.keys; |
+ Iterable<V> get values => _map.values; |
+ int get length => _map.length; |
+ bool get isEmpty => _map.isEmpty; |
+ bool get isNotEmpty => _map.isNotEmpty; |
+} |