Chromium Code Reviews| Index: sdk/lib/vmservice/message.dart |
| diff --git a/sdk/lib/vmservice/message.dart b/sdk/lib/vmservice/message.dart |
| index 481206e6eb6ebe118e6f6649d79dbc66e1f64bb1..f16454274f68f9b104ed3619208ac623a1905cf8 100644 |
| --- a/sdk/lib/vmservice/message.dart |
| +++ b/sdk/lib/vmservice/message.dart |
| @@ -116,23 +116,53 @@ class Message { |
| return _completer.future; |
| } |
| + bool _isFileSystemMethod(String method) { |
|
turnidge
2016/06/10 18:45:34
Maybe _methodNeedsObjectParameters or something...
|
| + switch (method) { |
| + case '_listDevFS': |
| + case '_listDevFSFiles': |
| + case '_createDevFS': |
| + case '_deleteDevFS': |
| + case '_writeDevFSFile': |
| + case '_writeDevFSFiles': |
| + case '_readDevFSFile': |
| + return true; |
| + default: |
| + return false; |
| + } |
| + } |
| + |
| Future<String> sendToVM() { |
| final receivePort = new RawReceivePort(); |
| receivePort.handler = (value) { |
| receivePort.close(); |
| _completer.complete(value); |
| }; |
| - var keys = _makeAllString(params.keys.toList(growable:false)); |
| - var values = _makeAllString(params.values.toList(growable:false)); |
| - var request = new List(6) |
| - ..[0] = 0 // Make room for OOB message type. |
| - ..[1] = receivePort.sendPort |
| - ..[2] = serial |
| - ..[3] = method |
| - ..[4] = keys |
| - ..[5] = values; |
| - sendRootServiceMessage(request); |
| - return _completer.future; |
| + if (_isFileSystemMethod(method)) { |
| + // We use a different method invocation path here. |
| + var keys = params.keys.toList(growable:false); |
| + var values = params.values.toList(growable:false); |
| + var request = new List(6) |
| + ..[0] = 0 // Make room for OOB message type. |
| + ..[1] = receivePort.sendPort |
| + ..[2] = serial |
| + ..[3] = method |
| + ..[4] = keys |
| + ..[5] = values; |
| + sendObjectRootServiceMessage(request); |
| + return _completer.future; |
| + } else { |
| + var keys = _makeAllString(params.keys.toList(growable:false)); |
| + var values = _makeAllString(params.values.toList(growable:false)); |
| + var request = new List(6) |
| + ..[0] = 0 // Make room for OOB message type. |
| + ..[1] = receivePort.sendPort |
| + ..[2] = serial |
| + ..[3] = method |
| + ..[4] = keys |
| + ..[5] = values; |
| + sendRootServiceMessage(request); |
| + return _completer.future; |
| + } |
| } |
| void setResponse(String response) { |
| @@ -147,3 +177,4 @@ class Message { |
| external bool sendIsolateServiceMessage(SendPort sp, List m); |
| external void sendRootServiceMessage(List m); |
| +external void sendObjectRootServiceMessage(List m); |