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

Side by Side Diff: lib/html/src/dart2js_Conversions.dart

Issue 11358060: Change NotImplementedException to UnimplementedError. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address review comments. Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « lib/html/dartium/html_dartium.dart ('k') | lib/html/src/native_DOMImplementation.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 5
6 // Conversions for IDBKey. 6 // Conversions for IDBKey.
7 // 7 //
8 // Per http://www.w3.org/TR/IndexedDB/#key-construct 8 // Per http://www.w3.org/TR/IndexedDB/#key-construct
9 // 9 //
10 // "A value is said to be a valid key if it is one of the following types: Array 10 // "A value is said to be a valid key if it is one of the following types: Array
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 containsDate(object) { 129 containsDate(object) {
130 if (_isJavaScriptDate(object)) return true; 130 if (_isJavaScriptDate(object)) return true;
131 if (object is List) { 131 if (object is List) {
132 for (int i = 0; i < object.length; i++) { 132 for (int i = 0; i < object.length; i++) {
133 if (containsDate(object[i])) return true; 133 if (containsDate(object[i])) return true;
134 } 134 }
135 } 135 }
136 return false; // number, string. 136 return false; // number, string.
137 } 137 }
138 if (containsDate(nativeKey)) { 138 if (containsDate(nativeKey)) {
139 throw const NotImplementedException('IDBKey containing Date'); 139 throw new UnimplementedError('IDBKey containing Date');
140 } 140 }
141 // TODO: Cache conversion somewhere? 141 // TODO: Cache conversion somewhere?
142 return nativeKey; 142 return nativeKey;
143 } 143 }
144 144
145 /** 145 /**
146 * Converts a Dart object into a valid IDBKey. 146 * Converts a Dart object into a valid IDBKey.
147 * 147 *
148 * May return the original input. Does not mutate input. 148 * May return the original input. Does not mutate input.
149 * 149 *
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 cleanupSlots() {} // Will be needed if we mark objects with a property. 210 cleanupSlots() {} // Will be needed if we mark objects with a property.
211 211
212 // Returns the input, or a clone of the input. 212 // Returns the input, or a clone of the input.
213 walk(e) { 213 walk(e) {
214 if (e == null) return e; 214 if (e == null) return e;
215 if (e is bool) return e; 215 if (e is bool) return e;
216 if (e is num) return e; 216 if (e is num) return e;
217 if (e is String) return e; 217 if (e is String) return e;
218 if (e is Date) { 218 if (e is Date) {
219 // TODO(sra). 219 // TODO(sra).
220 throw const NotImplementedException('structured clone of Date'); 220 throw new UnimplementedError('structured clone of Date');
221 } 221 }
222 if (e is RegExp) { 222 if (e is RegExp) {
223 // TODO(sra). 223 // TODO(sra).
224 throw const NotImplementedException('structured clone of RegExp'); 224 throw new UnimplementedError('structured clone of RegExp');
225 } 225 }
226 226
227 // The browser's internal structured cloning algorithm will copy certain 227 // The browser's internal structured cloning algorithm will copy certain
228 // types of object, but it will copy only its own implementations and not 228 // types of object, but it will copy only its own implementations and not
229 // just any Dart implementations of the interface. 229 // just any Dart implementations of the interface.
230 230
231 // TODO(sra): The JavaScript objects suitable for direct cloning by the 231 // TODO(sra): The JavaScript objects suitable for direct cloning by the
232 // structured clone algorithm could be tagged with an private interface. 232 // structured clone algorithm could be tagged with an private interface.
233 233
234 if (e is _FileImpl) return e; 234 if (e is _FileImpl) return e;
235 if (e is File) { 235 if (e is File) {
236 throw const NotImplementedException('structured clone of File'); 236 throw new UnimplementedError('structured clone of File');
237 } 237 }
238 238
239 if (e is _BlobImpl) return e; 239 if (e is _BlobImpl) return e;
240 if (e is Blob) { 240 if (e is Blob) {
241 throw const NotImplementedException('structured clone of Blob'); 241 throw new UnimplementedError('structured clone of Blob');
242 } 242 }
243 243
244 if (e is _FileListImpl) return e; 244 if (e is _FileListImpl) return e;
245 245
246 // TODO(sra): Firefox: How to convert _TypedImageData on the other end? 246 // TODO(sra): Firefox: How to convert _TypedImageData on the other end?
247 if (e is _ImageDataImpl) return e; 247 if (e is _ImageDataImpl) return e;
248 if (e is ImageData) { 248 if (e is ImageData) {
249 throw const NotImplementedException('structured clone of ImageData'); 249 throw new UnimplementedError('structured clone of ImageData');
250 } 250 }
251 251
252 if (e is _ArrayBufferImpl) return e; 252 if (e is _ArrayBufferImpl) return e;
253 if (e is ArrayBuffer) { 253 if (e is ArrayBuffer) {
254 throw const NotImplementedException('structured clone of ArrayBuffer'); 254 throw new UnimplementedError('structured clone of ArrayBuffer');
255 } 255 }
256 256
257 if (e is _ArrayBufferViewImpl) return e; 257 if (e is _ArrayBufferViewImpl) return e;
258 if (e is ArrayBufferView) { 258 if (e is ArrayBufferView) {
259 throw const NotImplementedException('structured clone of ArrayBufferView') ; 259 throw new UnimplementedError('structured clone of ArrayBufferView');
260 } 260 }
261 261
262 if (e is Map) { 262 if (e is Map) {
263 var slot = findSlot(e); 263 var slot = findSlot(e);
264 var copy = readSlot(slot); 264 var copy = readSlot(slot);
265 if (copy != null) return copy; 265 if (copy != null) return copy;
266 copy = JS('var', '{}'); 266 copy = JS('var', '{}');
267 writeSlot(slot, copy); 267 writeSlot(slot, copy);
268 e.forEach((key, value) { 268 e.forEach((key, value) {
269 JS('void', '#[#] = #', copy, key, walk(value)); 269 JS('void', '#[#] = #', copy, key, walk(value));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 copy = JS('List', 'new Array(#)', length); 321 copy = JS('List', 'new Array(#)', length);
322 writeSlot(slot, copy); 322 writeSlot(slot, copy);
323 } 323 }
324 324
325 for ( ; i < length; i++) { 325 for ( ; i < length; i++) {
326 copy[i] = walk(e[i]); 326 copy[i] = walk(e[i]);
327 } 327 }
328 return copy; 328 return copy;
329 } 329 }
330 330
331 throw const NotImplementedException('structured clone of other type'); 331 throw new UnimplementedError('structured clone of other type');
332 } 332 }
333 333
334 var copy = walk(value); 334 var copy = walk(value);
335 cleanupSlots(); 335 cleanupSlots();
336 return copy; 336 return copy;
337 } 337 }
338 338
339 /** 339 /**
340 * Converts a native value into a Dart object. 340 * Converts a native value into a Dart object.
341 * 341 *
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 writeSlot(int i, x) { copies[i] = x; } 374 writeSlot(int i, x) { copies[i] = x; }
375 375
376 walk(e) { 376 walk(e) {
377 if (e == null) return e; 377 if (e == null) return e;
378 if (e is bool) return e; 378 if (e is bool) return e;
379 if (e is num) return e; 379 if (e is num) return e;
380 if (e is String) return e; 380 if (e is String) return e;
381 381
382 if (_isJavaScriptDate(e)) { 382 if (_isJavaScriptDate(e)) {
383 // TODO(sra). 383 // TODO(sra).
384 throw const NotImplementedException('structured clone of Date'); 384 throw new UnimplementedError('structured clone of Date');
385 } 385 }
386 386
387 if (_isJavaScriptRegExp(e)) { 387 if (_isJavaScriptRegExp(e)) {
388 // TODO(sra). 388 // TODO(sra).
389 throw const NotImplementedException('structured clone of RegExp'); 389 throw new UnimplementedError('structured clone of RegExp');
390 } 390 }
391 391
392 if (_isJavaScriptSimpleObject(e)) { 392 if (_isJavaScriptSimpleObject(e)) {
393 // TODO(sra): If mustCopy is false, swizzle the prototype for one of a Map 393 // TODO(sra): If mustCopy is false, swizzle the prototype for one of a Map
394 // implementation that uses the properies as storage. 394 // implementation that uses the properies as storage.
395 var slot = findSlot(e); 395 var slot = findSlot(e);
396 var copy = readSlot(slot); 396 var copy = readSlot(slot);
397 if (copy != null) return copy; 397 if (copy != null) return copy;
398 copy = {}; 398 copy = {};
399 399
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 } 431 }
432 432
433 433
434 bool _isJavaScriptDate(value) => JS('bool', '# instanceof Date', value); 434 bool _isJavaScriptDate(value) => JS('bool', '# instanceof Date', value);
435 bool _isJavaScriptRegExp(value) => JS('bool', '# instanceof RegExp', value); 435 bool _isJavaScriptRegExp(value) => JS('bool', '# instanceof RegExp', value);
436 bool _isJavaScriptArray(value) => JS('bool', '# instanceof Array', value); 436 bool _isJavaScriptArray(value) => JS('bool', '# instanceof Array', value);
437 bool _isJavaScriptSimpleObject(value) => 437 bool _isJavaScriptSimpleObject(value) =>
438 JS('bool', 'Object.getPrototypeOf(#) === Object.prototype', value); 438 JS('bool', 'Object.getPrototypeOf(#) === Object.prototype', value);
439 bool _isImmutableJavaScriptArray(value) => 439 bool _isImmutableJavaScriptArray(value) =>
440 JS('bool', r'!!(#.immutable$list)', value); 440 JS('bool', r'!!(#.immutable$list)', value);
OLDNEW
« no previous file with comments | « lib/html/dartium/html_dartium.dart ('k') | lib/html/src/native_DOMImplementation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698