| OLD | NEW | 
|    1 // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2015, 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 // VMOptions=--error_on_bad_type --error_on_bad_override |    4 // VMOptions=--error_on_bad_type --error_on_bad_override | 
|    5  |    5  | 
|    6 library get_object_rpc_test; |    6 library get_object_rpc_test; | 
|    7  |    7  | 
|    8 import 'dart:typed_data'; |    8 import 'dart:typed_data'; | 
|    9 import 'dart:convert' show BASE64; |    9 import 'dart:convert' show BASE64; | 
|   10 import 'package:observatory/service_io.dart'; |   10 import 'package:observatory/service_io.dart'; | 
|   11 import 'package:unittest/unittest.dart'; |   11 import 'package:unittest/unittest.dart'; | 
|   12 import 'test_helper.dart'; |   12 import 'test_helper.dart'; | 
|   13  |   13  | 
|   14 class _DummyClass { |   14 class _DummyClass { | 
|   15   static var dummyVar = 11; |   15   static var dummyVar = 11; | 
|   16   void dummyFunction() {} |   16   void dummyFunction() { | 
 |   17   } | 
|   17 } |   18 } | 
|   18  |   19  | 
|   19 class _DummySubClass extends _DummyClass {} |   20 class _DummySubClass extends _DummyClass { | 
 |   21 } | 
|   20  |   22  | 
|   21 void warmup() { |   23 void warmup() { | 
|   22   // Silence analyzer. |   24   // Silence analyzer. | 
|   23   new _DummySubClass(); |   25   new _DummySubClass(); | 
|   24   new _DummyClass().dummyFunction(); |   26   new _DummyClass().dummyFunction(); | 
|   25 } |   27 } | 
|   26  |   28  | 
|   27 eval(Isolate isolate, String expression) async { |   29 eval(Isolate isolate, String expression) async { | 
|   28   Map params = { |   30   Map params = { | 
|   29     'targetId': isolate.rootLibrary.id, |   31     'targetId': isolate.rootLibrary.id, | 
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  449     Uint8List bytes = BASE64.decode(result['bytes']); |  451     Uint8List bytes = BASE64.decode(result['bytes']); | 
|  450     expect(bytes.buffer.asUint8List().toString(), equals('[3, 2, 1]')); |  452     expect(bytes.buffer.asUint8List().toString(), equals('[3, 2, 1]')); | 
|  451   }, |  453   }, | 
|  452  |  454  | 
|  453   // Uint8List prefix. |  455   // Uint8List prefix. | 
|  454   (Isolate isolate) async { |  456   (Isolate isolate) async { | 
|  455     // Call eval to get a Dart list. |  457     // Call eval to get a Dart list. | 
|  456     var evalResult = await eval(isolate, 'uint8List'); |  458     var evalResult = await eval(isolate, 'uint8List'); | 
|  457     var params = { |  459     var params = { | 
|  458       'objectId': evalResult['id'], |  460       'objectId': evalResult['id'], | 
|  459       'count': 2, |  461       'count' : 2, | 
|  460     }; |  462     }; | 
|  461     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  463     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  462     expect(result['type'], equals('Instance')); |  464     expect(result['type'], equals('Instance')); | 
|  463     expect(result['kind'], equals('Uint8List')); |  465     expect(result['kind'], equals('Uint8List')); | 
|  464     expect(result['_vmType'], equals('TypedData')); |  466     expect(result['_vmType'], equals('TypedData')); | 
|  465     expect(result['id'], startsWith('objects/')); |  467     expect(result['id'], startsWith('objects/')); | 
|  466     expect(result['valueAsString'], isNull); |  468     expect(result['valueAsString'], isNull); | 
|  467     expect(result['class']['type'], equals('@Class')); |  469     expect(result['class']['type'], equals('@Class')); | 
|  468     expect(result['class']['name'], equals('_Uint8List')); |  470     expect(result['class']['name'], equals('_Uint8List')); | 
|  469     expect(result['size'], isPositive); |  471     expect(result['size'], isPositive); | 
|  470     expect(result['fields'], isEmpty); |  472     expect(result['fields'], isEmpty); | 
|  471     expect(result['length'], equals(3)); |  473     expect(result['length'], equals(3)); | 
|  472     expect(result['offset'], isNull); |  474     expect(result['offset'], isNull); | 
|  473     expect(result['count'], equals(2)); |  475     expect(result['count'], equals(2)); | 
|  474     expect(result['bytes'], equals('AwI=')); |  476     expect(result['bytes'], equals('AwI=')); | 
|  475     Uint8List bytes = BASE64.decode(result['bytes']); |  477     Uint8List bytes = BASE64.decode(result['bytes']); | 
|  476     expect(bytes.buffer.asUint8List().toString(), equals('[3, 2]')); |  478     expect(bytes.buffer.asUint8List().toString(), equals('[3, 2]')); | 
|  477   }, |  479   }, | 
|  478  |  480  | 
|  479   // Uint8List suffix. |  481   // Uint8List suffix. | 
|  480   (Isolate isolate) async { |  482   (Isolate isolate) async { | 
|  481     // Call eval to get a Dart list. |  483     // Call eval to get a Dart list. | 
|  482     var evalResult = await eval(isolate, 'uint8List'); |  484     var evalResult = await eval(isolate, 'uint8List'); | 
|  483     var params = { |  485     var params = { | 
|  484       'objectId': evalResult['id'], |  486       'objectId': evalResult['id'], | 
|  485       'offset': 2, |  487       'offset' : 2, | 
|  486       'count': 2, |  488       'count' : 2, | 
|  487     }; |  489     }; | 
|  488     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  490     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  489     expect(result['type'], equals('Instance')); |  491     expect(result['type'], equals('Instance')); | 
|  490     expect(result['kind'], equals('Uint8List')); |  492     expect(result['kind'], equals('Uint8List')); | 
|  491     expect(result['_vmType'], equals('TypedData')); |  493     expect(result['_vmType'], equals('TypedData')); | 
|  492     expect(result['id'], startsWith('objects/')); |  494     expect(result['id'], startsWith('objects/')); | 
|  493     expect(result['valueAsString'], isNull); |  495     expect(result['valueAsString'], isNull); | 
|  494     expect(result['class']['type'], equals('@Class')); |  496     expect(result['class']['type'], equals('@Class')); | 
|  495     expect(result['class']['name'], equals('_Uint8List')); |  497     expect(result['class']['name'], equals('_Uint8List')); | 
|  496     expect(result['size'], isPositive); |  498     expect(result['size'], isPositive); | 
|  497     expect(result['fields'], isEmpty); |  499     expect(result['fields'], isEmpty); | 
|  498     expect(result['length'], equals(3)); |  500     expect(result['length'], equals(3)); | 
|  499     expect(result['offset'], equals(2)); |  501     expect(result['offset'], equals(2)); | 
|  500     expect(result['count'], equals(1)); |  502     expect(result['count'], equals(1)); | 
|  501     expect(result['bytes'], equals('AQ==')); |  503     expect(result['bytes'], equals('AQ==')); | 
|  502     Uint8List bytes = BASE64.decode(result['bytes']); |  504     Uint8List bytes = BASE64.decode(result['bytes']); | 
|  503     expect(bytes.buffer.asUint8List().toString(), equals('[1]')); |  505     expect(bytes.buffer.asUint8List().toString(), equals('[1]')); | 
|  504   }, |  506   }, | 
|  505  |  507  | 
|  506   // Uint8List with wacky offset. |  508   // Uint8List with wacky offset. | 
|  507   (Isolate isolate) async { |  509   (Isolate isolate) async { | 
|  508     // Call eval to get a Dart list. |  510     // Call eval to get a Dart list. | 
|  509     var evalResult = await eval(isolate, 'uint8List'); |  511     var evalResult = await eval(isolate, 'uint8List'); | 
|  510     var params = { |  512     var params = { | 
|  511       'objectId': evalResult['id'], |  513       'objectId': evalResult['id'], | 
|  512       'offset': 100, |  514       'offset' : 100, | 
|  513       'count': 2, |  515       'count' : 2, | 
|  514     }; |  516     }; | 
|  515     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  517     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  516     expect(result['type'], equals('Instance')); |  518     expect(result['type'], equals('Instance')); | 
|  517     expect(result['kind'], equals('Uint8List')); |  519     expect(result['kind'], equals('Uint8List')); | 
|  518     expect(result['_vmType'], equals('TypedData')); |  520     expect(result['_vmType'], equals('TypedData')); | 
|  519     expect(result['id'], startsWith('objects/')); |  521     expect(result['id'], startsWith('objects/')); | 
|  520     expect(result['valueAsString'], isNull); |  522     expect(result['valueAsString'], isNull); | 
|  521     expect(result['class']['type'], equals('@Class')); |  523     expect(result['class']['type'], equals('@Class')); | 
|  522     expect(result['class']['name'], equals('_Uint8List')); |  524     expect(result['class']['name'], equals('_Uint8List')); | 
|  523     expect(result['size'], isPositive); |  525     expect(result['size'], isPositive); | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
|  552     Uint8List bytes = BASE64.decode(result['bytes']); |  554     Uint8List bytes = BASE64.decode(result['bytes']); | 
|  553     expect(bytes.buffer.asUint64List().toString(), equals('[3, 2, 1]')); |  555     expect(bytes.buffer.asUint64List().toString(), equals('[3, 2, 1]')); | 
|  554   }, |  556   }, | 
|  555  |  557  | 
|  556   // Uint64List prefix. |  558   // Uint64List prefix. | 
|  557   (Isolate isolate) async { |  559   (Isolate isolate) async { | 
|  558     // Call eval to get a Dart list. |  560     // Call eval to get a Dart list. | 
|  559     var evalResult = await eval(isolate, 'uint64List'); |  561     var evalResult = await eval(isolate, 'uint64List'); | 
|  560     var params = { |  562     var params = { | 
|  561       'objectId': evalResult['id'], |  563       'objectId': evalResult['id'], | 
|  562       'count': 2, |  564       'count' : 2, | 
|  563     }; |  565     }; | 
|  564     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  566     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  565     expect(result['type'], equals('Instance')); |  567     expect(result['type'], equals('Instance')); | 
|  566     expect(result['kind'], equals('Uint64List')); |  568     expect(result['kind'], equals('Uint64List')); | 
|  567     expect(result['_vmType'], equals('TypedData')); |  569     expect(result['_vmType'], equals('TypedData')); | 
|  568     expect(result['id'], startsWith('objects/')); |  570     expect(result['id'], startsWith('objects/')); | 
|  569     expect(result['valueAsString'], isNull); |  571     expect(result['valueAsString'], isNull); | 
|  570     expect(result['class']['type'], equals('@Class')); |  572     expect(result['class']['type'], equals('@Class')); | 
|  571     expect(result['class']['name'], equals('_Uint64List')); |  573     expect(result['class']['name'], equals('_Uint64List')); | 
|  572     expect(result['size'], isPositive); |  574     expect(result['size'], isPositive); | 
|  573     expect(result['fields'], isEmpty); |  575     expect(result['fields'], isEmpty); | 
|  574     expect(result['length'], equals(3)); |  576     expect(result['length'], equals(3)); | 
|  575     expect(result['offset'], isNull); |  577     expect(result['offset'], isNull); | 
|  576     expect(result['count'], equals(2)); |  578     expect(result['count'], equals(2)); | 
|  577     expect(result['bytes'], equals('AwAAAAAAAAACAAAAAAAAAA==')); |  579     expect(result['bytes'], equals('AwAAAAAAAAACAAAAAAAAAA==')); | 
|  578     Uint8List bytes = BASE64.decode(result['bytes']); |  580     Uint8List bytes = BASE64.decode(result['bytes']); | 
|  579     expect(bytes.buffer.asUint64List().toString(), equals('[3, 2]')); |  581     expect(bytes.buffer.asUint64List().toString(), equals('[3, 2]')); | 
|  580   }, |  582   }, | 
|  581  |  583  | 
|  582   // Uint64List suffix. |  584   // Uint64List suffix. | 
|  583   (Isolate isolate) async { |  585   (Isolate isolate) async { | 
|  584     // Call eval to get a Dart list. |  586     // Call eval to get a Dart list. | 
|  585     var evalResult = await eval(isolate, 'uint64List'); |  587     var evalResult = await eval(isolate, 'uint64List'); | 
|  586     var params = { |  588     var params = { | 
|  587       'objectId': evalResult['id'], |  589       'objectId': evalResult['id'], | 
|  588       'offset': 2, |  590       'offset' : 2, | 
|  589       'count': 2, |  591       'count' : 2, | 
|  590     }; |  592     }; | 
|  591     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  593     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  592     expect(result['type'], equals('Instance')); |  594     expect(result['type'], equals('Instance')); | 
|  593     expect(result['kind'], equals('Uint64List')); |  595     expect(result['kind'], equals('Uint64List')); | 
|  594     expect(result['_vmType'], equals('TypedData')); |  596     expect(result['_vmType'], equals('TypedData')); | 
|  595     expect(result['id'], startsWith('objects/')); |  597     expect(result['id'], startsWith('objects/')); | 
|  596     expect(result['valueAsString'], isNull); |  598     expect(result['valueAsString'], isNull); | 
|  597     expect(result['class']['type'], equals('@Class')); |  599     expect(result['class']['type'], equals('@Class')); | 
|  598     expect(result['class']['name'], equals('_Uint64List')); |  600     expect(result['class']['name'], equals('_Uint64List')); | 
|  599     expect(result['size'], isPositive); |  601     expect(result['size'], isPositive); | 
|  600     expect(result['fields'], isEmpty); |  602     expect(result['fields'], isEmpty); | 
|  601     expect(result['length'], equals(3)); |  603     expect(result['length'], equals(3)); | 
|  602     expect(result['offset'], equals(2)); |  604     expect(result['offset'], equals(2)); | 
|  603     expect(result['count'], equals(1)); |  605     expect(result['count'], equals(1)); | 
|  604     expect(result['bytes'], equals('AQAAAAAAAAA=')); |  606     expect(result['bytes'], equals('AQAAAAAAAAA=')); | 
|  605     Uint8List bytes = BASE64.decode(result['bytes']); |  607     Uint8List bytes = BASE64.decode(result['bytes']); | 
|  606     expect(bytes.buffer.asUint64List().toString(), equals('[1]')); |  608     expect(bytes.buffer.asUint64List().toString(), equals('[1]')); | 
|  607   }, |  609   }, | 
|  608  |  610  | 
|  609   // Uint64List with wacky offset. |  611   // Uint64List with wacky offset. | 
|  610   (Isolate isolate) async { |  612   (Isolate isolate) async { | 
|  611     // Call eval to get a Dart list. |  613     // Call eval to get a Dart list. | 
|  612     var evalResult = await eval(isolate, 'uint64List'); |  614     var evalResult = await eval(isolate, 'uint64List'); | 
|  613     var params = { |  615     var params = { | 
|  614       'objectId': evalResult['id'], |  616       'objectId': evalResult['id'], | 
|  615       'offset': 100, |  617       'offset' : 100, | 
|  616       'count': 2, |  618       'count' : 2, | 
|  617     }; |  619     }; | 
|  618     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  620     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  619     expect(result['type'], equals('Instance')); |  621     expect(result['type'], equals('Instance')); | 
|  620     expect(result['kind'], equals('Uint64List')); |  622     expect(result['kind'], equals('Uint64List')); | 
|  621     expect(result['_vmType'], equals('TypedData')); |  623     expect(result['_vmType'], equals('TypedData')); | 
|  622     expect(result['id'], startsWith('objects/')); |  624     expect(result['id'], startsWith('objects/')); | 
|  623     expect(result['valueAsString'], isNull); |  625     expect(result['valueAsString'], isNull); | 
|  624     expect(result['class']['type'], equals('@Class')); |  626     expect(result['class']['type'], equals('@Class')); | 
|  625     expect(result['class']['name'], equals('_Uint64List')); |  627     expect(result['class']['name'], equals('_Uint64List')); | 
|  626     expect(result['size'], isPositive); |  628     expect(result['size'], isPositive); | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  669   }, |  671   }, | 
|  670  |  672  | 
|  671   // invalid library. |  673   // invalid library. | 
|  672   (Isolate isolate) async { |  674   (Isolate isolate) async { | 
|  673     var params = { |  675     var params = { | 
|  674       'objectId': 'libraries/9999999', |  676       'objectId': 'libraries/9999999', | 
|  675     }; |  677     }; | 
|  676     bool caughtException; |  678     bool caughtException; | 
|  677     try { |  679     try { | 
|  678       await isolate.invokeRpcNoUpgrade('getObject', params); |  680       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  679       expect(false, isTrue, reason: 'Unreachable'); |  681       expect(false, isTrue, reason:'Unreachable'); | 
|  680     } on ServerRpcException catch (e) { |  682     } on ServerRpcException catch(e) { | 
|  681       caughtException = true; |  683       caughtException = true; | 
|  682       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  684       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  683       expect(e.message, |  685       expect(e.message, | 
|  684           "getObject: invalid 'objectId' parameter: libraries/9999999"); |  686              "getObject: invalid 'objectId' parameter: libraries/9999999"); | 
|  685     } |  687     } | 
|  686     expect(caughtException, isTrue); |  688     expect(caughtException, isTrue); | 
|  687   }, |  689   }, | 
|  688  |  690  | 
|  689   // script. |  691   // script. | 
|  690   (Isolate isolate) async { |  692   (Isolate isolate) async { | 
|  691     // Get the library first. |  693     // Get the library first. | 
|  692     var params = { |  694     var params = { | 
|  693       'objectId': isolate.rootLibrary.id, |  695       'objectId': isolate.rootLibrary.id, | 
|  694     }; |  696     }; | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
|  712   }, |  714   }, | 
|  713  |  715  | 
|  714   // invalid script. |  716   // invalid script. | 
|  715   (Isolate isolate) async { |  717   (Isolate isolate) async { | 
|  716     var params = { |  718     var params = { | 
|  717       'objectId': 'scripts/9999999', |  719       'objectId': 'scripts/9999999', | 
|  718     }; |  720     }; | 
|  719     bool caughtException; |  721     bool caughtException; | 
|  720     try { |  722     try { | 
|  721       await isolate.invokeRpcNoUpgrade('getObject', params); |  723       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  722       expect(false, isTrue, reason: 'Unreachable'); |  724       expect(false, isTrue, reason:'Unreachable'); | 
|  723     } on ServerRpcException catch (e) { |  725     } on ServerRpcException catch(e) { | 
|  724       caughtException = true; |  726       caughtException = true; | 
|  725       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  727       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  726       expect(e.message, |  728       expect(e.message, | 
|  727           "getObject: invalid 'objectId' parameter: scripts/9999999"); |  729              "getObject: invalid 'objectId' parameter: scripts/9999999"); | 
|  728     } |  730     } | 
|  729     expect(caughtException, isTrue); |  731     expect(caughtException, isTrue); | 
|  730   }, |  732   }, | 
|  731  |  733  | 
|  732   // class |  734   // class | 
|  733   (Isolate isolate) async { |  735   (Isolate isolate) async { | 
|  734     // Call eval to get a class id. |  736     // Call eval to get a class id. | 
|  735     var evalResult = await eval(isolate, 'new _DummyClass()'); |  737     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  736     var params = { |  738     var params = { | 
|  737       'objectId': evalResult['class']['id'], |  739       'objectId': evalResult['class']['id'], | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
|  759   }, |  761   }, | 
|  760  |  762  | 
|  761   // invalid class. |  763   // invalid class. | 
|  762   (Isolate isolate) async { |  764   (Isolate isolate) async { | 
|  763     var params = { |  765     var params = { | 
|  764       'objectId': 'classes/9999999', |  766       'objectId': 'classes/9999999', | 
|  765     }; |  767     }; | 
|  766     bool caughtException; |  768     bool caughtException; | 
|  767     try { |  769     try { | 
|  768       await isolate.invokeRpcNoUpgrade('getObject', params); |  770       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  769       expect(false, isTrue, reason: 'Unreachable'); |  771       expect(false, isTrue, reason:'Unreachable'); | 
|  770     } on ServerRpcException catch (e) { |  772     } on ServerRpcException catch(e) { | 
|  771       caughtException = true; |  773       caughtException = true; | 
|  772       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  774       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  773       expect(e.message, |  775       expect(e.message, | 
|  774           "getObject: invalid 'objectId' parameter: classes/9999999"); |  776              "getObject: invalid 'objectId' parameter: classes/9999999"); | 
|  775     } |  777     } | 
|  776     expect(caughtException, isTrue); |  778     expect(caughtException, isTrue); | 
|  777   }, |  779   }, | 
|  778  |  780  | 
|  779   // type. |  781   // type. | 
|  780   (Isolate isolate) async { |  782   (Isolate isolate) async { | 
|  781     // Call eval to get a class id. |  783     // Call eval to get a class id. | 
|  782     var evalResult = await eval(isolate, 'new _DummyClass()'); |  784     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  783     var id = "${evalResult['class']['id']}/types/0"; |  785     var id = "${evalResult['class']['id']}/types/0"; | 
|  784     var params = { |  786     var params = { | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|  799   // invalid type. |  801   // invalid type. | 
|  800   (Isolate isolate) async { |  802   (Isolate isolate) async { | 
|  801     var evalResult = await eval(isolate, 'new _DummyClass()'); |  803     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  802     var id = "${evalResult['class']['id']}/types/9999999"; |  804     var id = "${evalResult['class']['id']}/types/9999999"; | 
|  803     var params = { |  805     var params = { | 
|  804       'objectId': id, |  806       'objectId': id, | 
|  805     }; |  807     }; | 
|  806     bool caughtException; |  808     bool caughtException; | 
|  807     try { |  809     try { | 
|  808       await isolate.invokeRpcNoUpgrade('getObject', params); |  810       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  809       expect(false, isTrue, reason: 'Unreachable'); |  811       expect(false, isTrue, reason:'Unreachable'); | 
|  810     } on ServerRpcException catch (e) { |  812     } on ServerRpcException catch(e) { | 
|  811       caughtException = true; |  813       caughtException = true; | 
|  812       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  814       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  813       expect( |  815       expect(e.message, | 
|  814           e.message, startsWith("getObject: invalid 'objectId' parameter: ")); |  816              startsWith("getObject: invalid 'objectId' parameter: ")); | 
|  815     } |  817     } | 
|  816     expect(caughtException, isTrue); |  818     expect(caughtException, isTrue); | 
|  817   }, |  819   }, | 
|  818  |  820  | 
|  819   // function. |  821   // function. | 
|  820   (Isolate isolate) async { |  822   (Isolate isolate) async { | 
|  821     // Call eval to get a class id. |  823     // Call eval to get a class id. | 
|  822     var evalResult = await eval(isolate, 'new _DummyClass()'); |  824     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  823     var id = "${evalResult['class']['id']}/functions/dummyFunction"; |  825     var id = "${evalResult['class']['id']}/functions/dummyFunction"; | 
|  824     var params = { |  826     var params = { | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|  844   (Isolate isolate) async { |  846   (Isolate isolate) async { | 
|  845     // Call eval to get a class id. |  847     // Call eval to get a class id. | 
|  846     var evalResult = await eval(isolate, 'new _DummyClass()'); |  848     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  847     var id = "${evalResult['class']['id']}/functions/invalid"; |  849     var id = "${evalResult['class']['id']}/functions/invalid"; | 
|  848     var params = { |  850     var params = { | 
|  849       'objectId': id, |  851       'objectId': id, | 
|  850     }; |  852     }; | 
|  851     bool caughtException; |  853     bool caughtException; | 
|  852     try { |  854     try { | 
|  853       await isolate.invokeRpcNoUpgrade('getObject', params); |  855       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  854       expect(false, isTrue, reason: 'Unreachable'); |  856       expect(false, isTrue, reason:'Unreachable'); | 
|  855     } on ServerRpcException catch (e) { |  857     } on ServerRpcException catch(e) { | 
|  856       caughtException = true; |  858       caughtException = true; | 
|  857       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  859       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  858       expect( |  860       expect(e.message, | 
|  859           e.message, startsWith("getObject: invalid 'objectId' parameter: ")); |  861              startsWith("getObject: invalid 'objectId' parameter: ")); | 
|  860     } |  862     } | 
|  861     expect(caughtException, isTrue); |  863     expect(caughtException, isTrue); | 
|  862   }, |  864   }, | 
|  863  |  865  | 
|  864   // field |  866   // field | 
|  865   (Isolate isolate) async { |  867   (Isolate isolate) async { | 
|  866     // Call eval to get a class id. |  868     // Call eval to get a class id. | 
|  867     var evalResult = await eval(isolate, 'new _DummyClass()'); |  869     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  868     var id = "${evalResult['class']['id']}/fields/dummyVar"; |  870     var id = "${evalResult['class']['id']}/fields/dummyVar"; | 
|  869     var params = { |  871     var params = { | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
|  887   (Isolate isolate) async { |  889   (Isolate isolate) async { | 
|  888     // Call eval to get a class id. |  890     // Call eval to get a class id. | 
|  889     var evalResult = await eval(isolate, 'new _DummyClass()'); |  891     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  890     var id = "${evalResult['class']['id']}/fields/mythicalField"; |  892     var id = "${evalResult['class']['id']}/fields/mythicalField"; | 
|  891     var params = { |  893     var params = { | 
|  892       'objectId': id, |  894       'objectId': id, | 
|  893     }; |  895     }; | 
|  894     bool caughtException; |  896     bool caughtException; | 
|  895     try { |  897     try { | 
|  896       await isolate.invokeRpcNoUpgrade('getObject', params); |  898       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  897       expect(false, isTrue, reason: 'Unreachable'); |  899       expect(false, isTrue, reason:'Unreachable'); | 
|  898     } on ServerRpcException catch (e) { |  900     } on ServerRpcException catch(e) { | 
|  899       caughtException = true; |  901       caughtException = true; | 
|  900       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  902       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  901       expect( |  903       expect(e.message, | 
|  902           e.message, startsWith("getObject: invalid 'objectId' parameter: ")); |  904              startsWith("getObject: invalid 'objectId' parameter: ")); | 
|  903     } |  905     } | 
|  904     expect(caughtException, isTrue); |  906     expect(caughtException, isTrue); | 
|  905   }, |  907   }, | 
|  906  |  908  | 
|  907   // code. |  909   // code. | 
|  908   (Isolate isolate) async { |  910   (Isolate isolate) async { | 
|  909     // Call eval to get a class id. |  911     // Call eval to get a class id. | 
|  910     var evalResult = await eval(isolate, 'new _DummyClass()'); |  912     var evalResult = await eval(isolate, 'new _DummyClass()'); | 
|  911     var funcId = "${evalResult['class']['id']}/functions/dummyFunction"; |  913     var funcId = "${evalResult['class']['id']}/functions/dummyFunction"; | 
|  912     var params = { |  914     var params = { | 
|  913       'objectId': funcId, |  915       'objectId': funcId, | 
|  914     }; |  916     }; | 
|  915     var funcResult = await isolate.invokeRpcNoUpgrade('getObject', params); |  917     var funcResult = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  916     params = { |  918     params = { | 
|  917       'objectId': funcResult['code']['id'], |  919       'objectId': funcResult['code']['id'], | 
|  918     }; |  920     }; | 
|  919     var result = await isolate.invokeRpcNoUpgrade('getObject', params); |  921     var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  920     expect(result['type'], equals('Code')); |  922     expect(result['type'], equals('Code')); | 
|  921     expect(result['name'], equals('_DummyClass.dummyFunction')); |  923     expect(result['name'], equals('_DummyClass.dummyFunction')); | 
|  922     expect(result['_vmName'], equals('dummyFunction')); |  924     expect(result['_vmName'], equals('dummyFunction')); | 
|  923     expect(result['kind'], equals('Dart')); |  925     expect(result['kind'], equals('Dart')); | 
|  924     expect(result['_optimized'], new isInstanceOf<bool>()); |  926     expect(result['_optimized'], new isInstanceOf<bool>()); | 
|  925     expect(result['function']['type'], equals('@Function')); |  927     expect(result['function']['type'], equals('@Function')); | 
|  926     expect(result['_startAddress'], new isInstanceOf<String>()); |  928     expect(result['_startAddress'], new isInstanceOf<String>()); | 
|  927     expect(result['_endAddress'], new isInstanceOf<String>()); |  929     expect(result['_endAddress'], new isInstanceOf<String>()); | 
|  928     expect(result['_objectPool'], isNotNull); |  930     expect(result['_objectPool'], isNotNull); | 
|  929     expect(result['_disassembly'], isNotNull); |  931     expect(result['_disassembly'], isNotNull); | 
|  930     expect(result['_descriptors'], isNotNull); |  932     expect(result['_descriptors'], isNotNull); | 
|  931     expect( |  933     expect(result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()]
     )); | 
|  932         result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()])); |  934     expect(result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()]
     )); | 
|  933     expect( |  | 
|  934         result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()])); |  | 
|  935   }, |  935   }, | 
|  936  |  936  | 
|  937   // invalid code. |  937   // invalid code. | 
|  938   (Isolate isolate) async { |  938   (Isolate isolate) async { | 
|  939     var params = { |  939     var params = { | 
|  940       'objectId': 'code/0', |  940       'objectId': 'code/0', | 
|  941     }; |  941     }; | 
|  942     bool caughtException; |  942     bool caughtException; | 
|  943     try { |  943     try { | 
|  944       await isolate.invokeRpcNoUpgrade('getObject', params); |  944       await isolate.invokeRpcNoUpgrade('getObject', params); | 
|  945       expect(false, isTrue, reason: 'Unreachable'); |  945       expect(false, isTrue, reason:'Unreachable'); | 
|  946     } on ServerRpcException catch (e) { |  946     } on ServerRpcException catch(e) { | 
|  947       caughtException = true; |  947       caughtException = true; | 
|  948       expect(e.code, equals(ServerRpcException.kInvalidParams)); |  948       expect(e.code, equals(ServerRpcException.kInvalidParams)); | 
|  949       expect(e.message, "getObject: invalid 'objectId' parameter: code/0"); |  949       expect(e.message, | 
 |  950              "getObject: invalid 'objectId' parameter: code/0"); | 
|  950     } |  951     } | 
|  951     expect(caughtException, isTrue); |  952     expect(caughtException, isTrue); | 
|  952   }, |  953   }, | 
|  953 ]; |  954 ]; | 
|  954  |  955  | 
|  955 main(args) async => runIsolateTests(args, tests, testeeBefore: warmup); |  956 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); | 
| OLD | NEW |