OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library service_html; | 5 library service_html; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 import 'dart:html'; | 9 import 'dart:html'; |
10 | 10 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 socket.onClose.first.then((_) { | 88 socket.onClose.first.then((_) { |
89 _socketFuture = null; | 89 _socketFuture = null; |
90 }); | 90 }); |
91 completer.complete(socket); | 91 completer.complete(socket); |
92 }); | 92 }); |
93 socket.onError.first.then((_) { | 93 socket.onError.first.then((_) { |
94 _socketFuture = null; | 94 _socketFuture = null; |
95 }); | 95 }); |
96 } | 96 } |
97 | 97 |
98 void _handleMessage(MessageEvent event) { | 98 void _handleMessage(MessageEvent message) { |
99 var map = JSON.decode(event.data); | 99 var map = JSON.decode(message.data); |
100 int seq = map['seq']; | 100 int seq = map['seq']; |
101 var response = map['response']; | 101 var response = map['response']; |
| 102 if (seq == null) { |
| 103 // Messages without sequence numbers are asynchronous events |
| 104 // from the vm. |
| 105 postEventMessage(response); |
| 106 return; |
| 107 } |
102 var completer = _pendingRequests.remove(seq); | 108 var completer = _pendingRequests.remove(seq); |
103 if (completer == null) { | 109 if (completer == null) { |
104 Logger.root.severe('Received unexpected message: ${map}'); | 110 Logger.root.severe('Received unexpected message: ${map}'); |
105 } else { | 111 } else { |
106 completer.complete(response); | 112 completer.complete(response); |
107 } | 113 } |
108 } | 114 } |
109 | 115 |
110 Future<String> getString(String id) { | 116 Future<String> getString(String id) { |
111 if (_socketFuture == null) { | 117 if (_socketFuture == null) { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 message['id'] = idString; | 169 message['id'] = idString; |
164 message['method'] = 'observatoryQuery'; | 170 message['method'] = 'observatoryQuery'; |
165 message['query'] = '$path'; | 171 message['query'] = '$path'; |
166 _requestSerial++; | 172 _requestSerial++; |
167 var completer = new Completer(); | 173 var completer = new Completer(); |
168 _pendingRequests[idString] = completer; | 174 _pendingRequests[idString] = completer; |
169 window.parent.postMessage(JSON.encode(message), '*'); | 175 window.parent.postMessage(JSON.encode(message), '*'); |
170 return completer.future; | 176 return completer.future; |
171 } | 177 } |
172 } | 178 } |
OLD | NEW |