OLD | NEW |
1 /** | 1 /** |
2 * A client-side key-value store with support for indexes. | 2 * A client-side key-value store with support for indexes. |
3 * | 3 * |
4 * Many browsers support IndexedDB—a web standard for | 4 * Many browsers support IndexedDB—a web standard for |
5 * an indexed database. | 5 * an indexed database. |
6 * By storing data on the client in an IndexedDB, | 6 * By storing data on the client in an IndexedDB, |
7 * a web app gets some advantages, such as faster performance and persistence. | 7 * a web app gets some advantages, such as faster performance and persistence. |
8 * To find out which browsers support IndexedDB, | 8 * To find out which browsers support IndexedDB, |
9 * refer to [Can I Use?](http://caniuse.com/#feat=indexeddb) | 9 * refer to [Can I Use?](http://caniuse.com/#feat=indexeddb) |
10 * | 10 * |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 request.onBlocked.listen(onBlocked); | 490 request.onBlocked.listen(onBlocked); |
491 } | 491 } |
492 return _completeRequest(request); | 492 return _completeRequest(request); |
493 } catch (e, stacktrace) { | 493 } catch (e, stacktrace) { |
494 return new Future.error(e, stacktrace); | 494 return new Future.error(e, stacktrace); |
495 } | 495 } |
496 } | 496 } |
497 | 497 |
498 @DomName('IDBFactory.deleteDatabase') | 498 @DomName('IDBFactory.deleteDatabase') |
499 Future<IdbFactory> deleteDatabase(String name, | 499 Future<IdbFactory> deleteDatabase(String name, |
500 {void onBlocked(Event)}) { | 500 {void onBlocked(Event e)}) { |
501 try { | 501 try { |
502 var request = _deleteDatabase(name); | 502 var request = _deleteDatabase(name); |
503 | 503 |
504 if (onBlocked != null) { | 504 if (onBlocked != null) { |
505 request.onBlocked.listen(onBlocked); | 505 request.onBlocked.listen(onBlocked); |
506 } | 506 } |
507 var completer = new Completer.sync(); | 507 var completer = new Completer<IdbFactory>.sync(); |
508 request.onSuccess.listen((e) { | 508 request.onSuccess.listen((e) { |
509 completer.complete(this); | 509 completer.complete(this); |
510 }); | 510 }); |
511 request.onError.listen(completer.completeError); | 511 request.onError.listen(completer.completeError); |
512 return completer.future; | 512 return completer.future; |
513 } catch (e, stacktrace) { | 513 } catch (e, stacktrace) { |
514 return new Future.error(e, stacktrace); | 514 return new Future.error(e, stacktrace); |
515 } | 515 } |
516 } | 516 } |
517 | 517 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 @Experimental() | 567 @Experimental() |
568 Request _webkitGetDatabaseNames() => _blink.BlinkIDBFactory.instance.webkitGet
DatabaseNames_Callback_0_(this); | 568 Request _webkitGetDatabaseNames() => _blink.BlinkIDBFactory.instance.webkitGet
DatabaseNames_Callback_0_(this); |
569 | 569 |
570 } | 570 } |
571 | 571 |
572 | 572 |
573 /** | 573 /** |
574 * Ties a request to a completer, so the completer is completed when it succeeds | 574 * Ties a request to a completer, so the completer is completed when it succeeds |
575 * and errors out when the request errors. | 575 * and errors out when the request errors. |
576 */ | 576 */ |
577 Future _completeRequest(Request request) { | 577 Future/*<T>*/ _completeRequest/*<T>*/(Request request) { |
578 var completer = new Completer.sync(); | 578 var completer = new Completer/*<T>*/.sync(); |
579 // TODO: make sure that completer.complete is synchronous as transactions | 579 // TODO: make sure that completer.complete is synchronous as transactions |
580 // may be committed if the result is not processed immediately. | 580 // may be committed if the result is not processed immediately. |
581 request.onSuccess.listen((e) { | 581 request.onSuccess.listen((e) { |
582 completer.complete(request.result); | 582 completer.complete(request.result as dynamic/*=T*/); |
583 }); | 583 }); |
584 request.onError.listen(completer.completeError); | 584 request.onError.listen(completer.completeError); |
585 return completer.future; | 585 return completer.future; |
586 } | 586 } |
587 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 587 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
588 // for details. All rights reserved. Use of this source code is governed by a | 588 // for details. All rights reserved. Use of this source code is governed by a |
589 // BSD-style license that can be found in the LICENSE file. | 589 // BSD-style license that can be found in the LICENSE file. |
590 | 590 |
591 | 591 |
592 @DomName('IDBIndex') | 592 @DomName('IDBIndex') |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1068 if (key != null) { | 1068 if (key != null) { |
1069 return _blink.BlinkIDBObjectStore.instance.put_Callback_2_(this, convertDa
rtToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptVal
ue(key)); | 1069 return _blink.BlinkIDBObjectStore.instance.put_Callback_2_(this, convertDa
rtToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptVal
ue(key)); |
1070 } | 1070 } |
1071 return _blink.BlinkIDBObjectStore.instance.put_Callback_1_(this, convertDart
ToNative_SerializedScriptValue(value)); | 1071 return _blink.BlinkIDBObjectStore.instance.put_Callback_1_(this, convertDart
ToNative_SerializedScriptValue(value)); |
1072 } | 1072 } |
1073 | 1073 |
1074 | 1074 |
1075 /** | 1075 /** |
1076 * Helper for iterating over cursors in a request. | 1076 * Helper for iterating over cursors in a request. |
1077 */ | 1077 */ |
1078 static Stream<Cursor> _cursorStreamFromResult(Request request, | 1078 static Stream/*<T>*/ _cursorStreamFromResult/*<T extends Cursor>*/(Request req
uest, |
1079 bool autoAdvance) { | 1079 bool autoAdvance) { |
1080 // TODO: need to guarantee that the controller provides the values | 1080 // TODO: need to guarantee that the controller provides the values |
1081 // immediately as waiting until the next tick will cause the transaction to | 1081 // immediately as waiting until the next tick will cause the transaction to |
1082 // close. | 1082 // close. |
1083 var controller = new StreamController(sync: true); | 1083 var controller = new StreamController/*<T>*/(sync: true); |
1084 | 1084 |
1085 //TODO: Report stacktrace once issue 4061 is resolved. | 1085 //TODO: Report stacktrace once issue 4061 is resolved. |
1086 request.onError.listen(controller.addError); | 1086 request.onError.listen(controller.addError); |
1087 | 1087 |
1088 request.onSuccess.listen((e) { | 1088 request.onSuccess.listen((e) { |
1089 Cursor cursor = request.result; | 1089 var cursor = request.result as dynamic /*=T*/; |
1090 if (cursor == null) { | 1090 if (cursor == null) { |
1091 controller.close(); | 1091 controller.close(); |
1092 } else { | 1092 } else { |
1093 controller.add(cursor); | 1093 controller.add(cursor); |
1094 if (autoAdvance == true && controller.hasListener) { | 1094 if (autoAdvance == true && controller.hasListener) { |
1095 cursor.next(); | 1095 cursor.next(); |
1096 } | 1096 } |
1097 } | 1097 } |
1098 }); | 1098 }); |
1099 return controller.stream; | 1099 return controller.stream; |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1388 | 1388 |
1389 @DomName('IDBVersionChangeEvent.newVersion') | 1389 @DomName('IDBVersionChangeEvent.newVersion') |
1390 @DocsEditable() | 1390 @DocsEditable() |
1391 int get newVersion => _blink.BlinkIDBVersionChangeEvent.instance.newVersion_Ge
tter_(this); | 1391 int get newVersion => _blink.BlinkIDBVersionChangeEvent.instance.newVersion_Ge
tter_(this); |
1392 | 1392 |
1393 @DomName('IDBVersionChangeEvent.oldVersion') | 1393 @DomName('IDBVersionChangeEvent.oldVersion') |
1394 @DocsEditable() | 1394 @DocsEditable() |
1395 int get oldVersion => _blink.BlinkIDBVersionChangeEvent.instance.oldVersion_Ge
tter_(this); | 1395 int get oldVersion => _blink.BlinkIDBVersionChangeEvent.instance.oldVersion_Ge
tter_(this); |
1396 | 1396 |
1397 } | 1397 } |
OLD | NEW |